flutter_webview_plugin:如何在默认浏览器中打开 link

flutter_webview_plugin: how to open a link in default browser

我用flutter_webview_plugin,我想开一个link;不在我的网络视图中,而是在用户的浏览器中。当我将 StreamSubscriptionString 一起使用时,应用程序仅侦听来自应用程序的 url,就像我使用 FlutterWebViewPlugin().reloadUrl.launchUrl.[=17= 时一样]

您应该可以使用 url_launcher package concurrently with the flutter_webview_plugin 来获得您想要的效果。

基本上对于 webview,您可以在 launchWebviewScaffold 中使用参数 invalidUrlRegex 来设置 URLs 不允许在您的 webview 中打开.

例如:下面阻止任何没有主机 google 或 Whosebug 的链接。

invalidUrlRegex: r'^(?!https:\/{2}www\.google\.com|https:\/{2}Whosebug\.com).*$'

然后在 webview 上有一个 onStateChanged 侦听器,这将导致任何阻塞的 URLs 导致 WebViewState.abortLoad 状态。

FlutterWebviewPlugin().onStateChanged.listen(onStateChanged);    

onStateChanged(WebViewStateChanged change) {
  if (change.type == WebViewState.abortLoad) {
    canLaunch(change.url).then((val) => val ? launch(change.url) : null);
  }
}

以上将使用 url_launcher 在用户首选浏览器中启动 URL。

这是迄今为止我能够在我们的应用程序中提出的最佳方法。