You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Web中flutter_inappwebview的onLoadStart无法返回重定向URL

解决flutter_inappwebview Web端onLoadStart回调始终返回初始URL的问题

在Web端使用flutter_inappwebview的beta版本时,确实会遇到onLoadStart回调传入的URL始终是初始值、无法获取重定向后地址的问题——这是因为Web端的实现基于iframe,重定向行为在iframe内部处理时,回调的URL参数没有同步更新。

可以通过以下几种方式解决:

方法1:在onLoadStart中主动获取当前URL

直接调用控制器的getUrl()方法,从WebView实例中获取真实的当前URL,替代回调传入的参数:

onLoadStart: (controller, url) async {
  // 主动获取当前实际加载的URL
  final currentUrl = await controller.getUrl();
  debugPrint('----- Load Start: $currentUrl');
},

方法2:使用onLoadResource回调捕获重定向地址

onLoadResource会监听每个资源的加载请求,包括重定向过程中的跳转地址,能更精准地捕获URL变化:

onLoadResource: (controller, resource) async {
  if (resource.url != null) {
    debugPrint('----- 资源加载地址: ${resource.url}');
  }
},

方法3:借助onLoadStop获取最终地址

如果只需要重定向后的最终URL,可以使用onLoadStop回调,它会在页面加载完成时返回最终的地址:

onLoadStop: (controller, url) async {
  debugPrint('----- 加载完成地址: $url');
},

另外,建议保持flutter_inappwebview beta版本的更新,后续官方可能会修复Web端onLoadStart回调的URL传递问题。

内容的提问来源于stack exchange,提问作者Tapas Pal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:05:14