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
相关产品推荐
相关产品推荐

