首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤动-禁用导航InAppWebView

颤动-禁用导航InAppWebView
EN

Stack Overflow用户
提问于 2021-01-04 13:22:13
回答 4查看 1.4K关注 0票数 1

我是flutter的新手,我想在其他小部件之间放置一个web视图,为此我使用了InAppWebView Flutter,但我想防止用户在单击web视图中的按钮时导航到其他页面。我是否必须为iOS和安卓编写一些本机代码来阻止导航?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2021-01-04 13:28:50

您可以通过导航委托属性阻止webview中的导航,如下所示:

代码语言:javascript
运行
复制
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,
      ),
票数 1
EN

Stack Overflow用户

发布于 2021-06-14 20:01:03

要禁用将用户导航到另一个页面,您可以使用onPageCommitVisible回调来确定用户正在单击重定向到另一个页面的url,因此只需在其中调用goBack

代码语言:javascript
运行
复制
 InAppWebView(
        onPageCommitVisible: (con,uri){
          print("url ${uri.toString()}");
          con.goBack();
        },

      ),
票数 1
EN

Stack Overflow用户

发布于 2021-07-10 07:03:34

大概是这样的:

代码语言:javascript
运行
复制
InAppWebView(
....
 shouldOverrideUrlLoading: (controller, navigationAction) async {
  final uri = navigationAction.request.url!;
  if(whitenAvigationHosts.contains(uri.host)){
    return NavigationActionPolicy.ALLOW;
  }
  return NavigationActionPolicy.CANCEL;
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65558000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档