在Flutter中,我使用flutter webview plugin启动类似以下内容的网址:

flutterWebviewPlugin.launch(url)

或者
WebviewScaffold(
  url: url,
  appBar: new AppBar(title: Text(title), actions: [
    new IconButton(
      icon: const Icon(Icons.share),
      onPressed: () => Share.share(url),
    )
  ]),
  withZoom: true,
  withLocalStorage: true,
  withJavascript: true,
);

但是,如果打开的网页内的任何链接都是应用程序链接,例如:fb://profile,我将得到net::ERR_UNKNOWN_URL_SCHEME。

在android中,我发现解决方案是覆盖here中提到的shouldOverrideUrlLoading,但是在flutter中我该怎么办?

最佳答案

您可以在pub.dev软件包中使用 webview_flutter

WebView(
        initialUrl: 'https://my.url.com',
        javascriptMode: JavascriptMode.unrestricted,
        navigationDelegate: (NavigationRequest request)
        {
          if (request.url.startsWith('https://my.redirect.url.com'))
          {
            print('blocking navigation to $request}');
            _launchURL('https://my.redirect.url.com');
            return NavigationDecision.prevent;
          }

          print('allowing navigation to $request');
          return NavigationDecision.navigate;
        },
      )

您可以在pub.dev软件包中使用 url_launcher 启动url。
_launchURL(String url) async {
if (await canLaunch(url)) {
  await launch(url);
} else {
  throw 'Could not launch $url';
}}

10-06 03:22