flutter_webview_plugin:如何在默认浏览器中打开 link
flutter_webview_plugin: how to open a link in default browser
我用flutter_webview_plugin
,我想开一个link;不在我的网络视图中,而是在用户的浏览器中。当我将 StreamSubscription
与 String
一起使用时,应用程序仅侦听来自应用程序的 url,就像我使用 FlutterWebViewPlugin().reloadUrl
或 .launchUrl
.[=17= 时一样]
您应该可以使用 url_launcher package concurrently with the flutter_webview_plugin 来获得您想要的效果。
基本上对于 webview,您可以在 launch
或 WebviewScaffold
中使用参数 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。
这是迄今为止我能够在我们的应用程序中提出的最佳方法。
我用flutter_webview_plugin
,我想开一个link;不在我的网络视图中,而是在用户的浏览器中。当我将 StreamSubscription
与 String
一起使用时,应用程序仅侦听来自应用程序的 url,就像我使用 FlutterWebViewPlugin().reloadUrl
或 .launchUrl
.[=17= 时一样]
您应该可以使用 url_launcher package concurrently with the flutter_webview_plugin 来获得您想要的效果。
基本上对于 webview,您可以在 launch
或 WebviewScaffold
中使用参数 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。
这是迄今为止我能够在我们的应用程序中提出的最佳方法。