【发布时间】:2021-04-09 23:16:48
【问题描述】:
我是 Flutter 的新手,我想在其他小部件之间放置一个 Web 视图,我正在使用 InAppWebView 颤振来做到这一点,但我想阻止用户在点击时导航到其他页面在 web 视图内的按钮上。我是否必须为 iOS 和 Android 编写一些本机代码来阻止导航?
谢谢
【问题讨论】:
标签: flutter flutter-inappwebview
我是 Flutter 的新手,我想在其他小部件之间放置一个 Web 视图,我正在使用 InAppWebView 颤振来做到这一点,但我想阻止用户在点击时导航到其他页面在 web 视图内的按钮上。我是否必须为 iOS 和 Android 编写一些本机代码来阻止导航?
谢谢
【问题讨论】:
标签: flutter flutter-inappwebview
类似的东西:
InAppWebView(
....
shouldOverrideUrlLoading: (controller, navigationAction) async {
final uri = navigationAction.request.url!;
if(whitenAvigationHosts.contains(uri.host)){
return NavigationActionPolicy.ALLOW;
}
return NavigationActionPolicy.CANCEL;
})
【讨论】:
要禁用将用户导航到另一个页面,您可以使用 onPageCommitVisible 回调来确定用户点击重定向到另一个页面的 url,因此只需在其中调用 goBack
InAppWebView(
onPageCommitVisible: (con,uri){
print("url ${uri.toString()}");
con.goBack();
},
),
【讨论】:
您可以通过如下导航委托属性阻止在 webview 中导航:
WebView(
debuggingEnabled: true,
initialUrl: _currentURL,
onWebViewCreated: (controller) {
_controller = controller;
return _controller;
},
onPageFinished: (url) {
if (url.contains(ConstUtils.course)) {
updateProfile();
}
},
navigationDelegate: (navigation) => NavigationDecision.prevent,
onWebResourceError: (error) {
NavigationUtils(context).popCurrentPage();
},
onPageStarted: (url) {
},
javascriptMode: JavascriptMode.unrestricted,
),
【讨论】:
flutter_inappwebview而不是webview_flutter