我是flutter的新手,我想在其他小部件之间放置一个web视图,为此我使用了InAppWebView Flutter,但我想防止用户在单击web视图中的按钮时导航到其他页面。我是否必须为iOS和安卓编写一些本机代码来阻止导航?
谢谢
发布于 2021-01-04 13:28:50
您可以通过导航委托属性阻止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,
),
发布于 2021-06-14 20:01:03
要禁用将用户导航到另一个页面,您可以使用onPageCommitVisible回调来确定用户正在单击重定向到另一个页面的url,因此只需在其中调用goBack
InAppWebView(
onPageCommitVisible: (con,uri){
print("url ${uri.toString()}");
con.goBack();
},
),
发布于 2021-07-10 07:03:34
大概是这样的:
InAppWebView(
....
shouldOverrideUrlLoading: (controller, navigationAction) async {
final uri = navigationAction.request.url!;
if(whitenAvigationHosts.contains(uri.host)){
return NavigationActionPolicy.ALLOW;
}
return NavigationActionPolicy.CANCEL;
})
https://stackoverflow.com/questions/65558000
复制相似问题