HarmonyOS flutter_webview重定向无法返回

使用flutter_webview加载页面,跳转了一个重定向的页面。并且在webviewController初始化的时候,增加了setOnNavigationRequest,会导致页面无法返回。

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

在Flutter的WebView中使用setOnNavigationRequest时,可能会遇到页面导航或返回按钮失效的情况。这是因为NavigationRequest被错误地处理或者被阻止。

请尝试以下解决方法:

1、确保正确处理返回值

setOnNavigationRequest的回调函数需要返回一个NavigationDecision,这决定了是否允许导航。如果返回了NavigationDecision.prevent,将会阻止导航。

WebView(
  initialUrl: 'zxxxxx',
  javascriptMode: JavascriptMode.unrestricted,
  navigationDelegate: (NavigationRequest request) {
    if (request.url.contains('blocked')) {
      return NavigationDecision.prevent;
    }
  return NavigationDecision.navigate;
  },
)

确保在没有阻止的情况下返回NavigationDecision.navigate。

2、处理返回键

如果在WebView中导航,返回键通常不会像在原生应用中那样自动工作。需要手动监听返回键,并决定是否在WebView中回退。

WillPopScope(
  onWillPop: () async {
  if (await _webViewController.canGoBack()) {
    _webViewController.goBack();
    return false; // 阻止默认的系统返回行为
  }
  return true; // 允许系统返回行为
},
child: WebView(
  // Your WebView code
),
);

3、检查导航的URL

URL重定向或页面跳转可能会影响WebView的返回行为。可以在setOnNavigationRequest中查看所有即将导航的URL,并调试是否有URL被错误地阻止。

4、调试日志输出

添加日志输出来调试,看看WebView的导航请求是否符合预期:

navigationDelegate: (NavigationRequest request) {
  print('Navigating to: ${request.url}');
  return NavigationDecision.navigate;
},
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS hilog重定向文件
90浏览 • 1回复 待解决
HarmonyOS requestInStream重定向问题
122浏览 • 1回复 待解决
HarmonyOS ArkWeb网页重定向问题
116浏览 • 1回复 待解决
HarmonyOS http请求重定向的处理
142浏览 • 1回复 待解决
Web调用url怎么重定向
265浏览 • 1回复 待解决
Web中如何判断是否发生重定向
1049浏览 • 1回复 待解决
HarmonyOS Web组件如何添加重定向监听
116浏览 • 1回复 待解决
鸿蒙Webview加载Url,alipay无法返回
9374浏览 • 1回复 待解决
HarmonyOS webview_flutter报错
303浏览 • 1回复 待解决
HarmonyOS webView_flutter保存
111浏览 • 1回复 待解决
HarmonyOS flutter webview如何调试
305浏览 • 1回复 待解决
HarmonyOS webview_flutter问题
21浏览 • 1回复 待解决