открывать ссылки на веб-сайты в моем приложении веб-просмотра Flutter

Я создаю приложение веб-просмотра Flutter, чтобы показывать и использовать свой веб-сайт, я хочу, чтобы, когда пользователь нажимает ссылку, принадлежащую моему веб-сайту, приложение запускало эту ссылку, а не запускало ее в браузере. Я использую пакет flutter_webview. Как я могу это сделать? Если вам нужна дополнительная информация или код, дайте мне знать. Заранее спасибо.


person josef    schedule 06.05.2021    source источник
comment
Я не думаю, что это возможно.   -  person Andrej    schedule 06.05.2021


Ответы (1)


Вы можете использовать flutter_inappwebview так:

import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

class Code extends StatefulWidget {
  @override
  _CodeState createState() => _CodeState();
}

class _CodeState extends State<Code> {
  InAppWebViewController webView;
  String url = "";
  double progress = 0;

  @override
  void initState() {
    super.initState();
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    final appBar = AppBar(
      elevation: 1.0,
      backgroundColor: Colors.blueGrey,
      title: Text('In-app website'),
      centerTitle: true,
      leading: IconButton(
        icon: Icon(Icons.arrow_back),
        onPressed: () {
          Navigator.of(context).pop();
        },
      ),
    );

    final body = InAppWebView(
      initialUrl: "https://www.google.com",
      initialHeaders: {},
      initialOptions: InAppWebViewGroupOptions(
        crossPlatform: InAppWebViewOptions(
          debuggingEnabled: true,
        ),
      ),
      onWebViewCreated: (InAppWebViewController controller) {
        webView = controller;
      },
      onLoadStart: (InAppWebViewController controller, String url) {
        setState(() {
          this.url = url;
        });
      },
      onLoadStop: (InAppWebViewController controller, String url) async {
        setState(() {
          this.url = url;
        });
      },
      onProgressChanged: (InAppWebViewController controller, int progress) {
        setState(() {
          this.progress = progress / 100;
        });
      },
    );

    return Scaffold(
      appBar: appBar,
      body: body,
    );
  }
}
person Totally Not Hardik    schedule 06.05.2021