Flutter中flutter_inappwebview的WebViewClient.onLoadResource替代方案咨询
Flutter中监听网页资源加载的替代方案
如果你需要监听网页加载的各类资源(对应Android原生WebView的WebViewClient.onLoadResource),可以通过以下两种主流方案实现:
1. 官方webview_flutter包(推荐)
在webview_flutter 4.0及以上版本中,NavigationDelegate提供了onResourceRequest回调,可捕获网页发起的所有资源请求(如图片、脚本、样式表、接口请求等)。
示例代码:
WebView( initialUrl: 'https://example.com', navigationDelegate: NavigationDelegate( onResourceRequest: (ResourceRequest request) { // 打印当前加载的资源URL print('正在加载资源: ${request.url}'); // 允许资源继续加载 return NavigationDecision.navigate; }, ), )
2. 第三方包flutter_inappwebview(功能更丰富)
这个包对原生WebView的API封装更完整,不仅提供了直接对应onLoadResource的回调,还支持监听资源加载的开始、结束全流程:
示例代码:
InAppWebView( initialUrlRequest: URLRequest(url: Uri.parse('https://example.com')), onLoadResource: (controller, resource) { // 资源加载完成时触发,对应原生onLoadResource逻辑 print('已加载资源: ${resource.url}'); }, onResourceLoadStart: (controller, resource) { // 资源开始加载时触发 print('开始加载资源: ${resource.url}'); }, onResourceLoadFinish: (controller, resource) { // 资源加载结束时触发 print('结束加载资源: ${resource.url}'); }, )
注意:使用flutter_inappwebview需要在iOS和Android的项目配置文件中完成相应权限及依赖配置,具体可参考包内的基础配置说明。
内容的提问来源于stack exchange,提问作者FF Gaming
相关产品推荐
相关产品推荐

