【问题标题】:How can I get listen the request that has been made in a web thtough InAppWebView in Flutter?如何通过 Flutter 中的 InAppWebView 监听 Web 中发出的请求?
【发布时间】:2022-12-19 19:07:57
【问题描述】:
我被要求开发一个应用程序,它基本上是一个嵌入了网络的 WebView。一切似乎都很好,但有一个问题需要解决。
他们需要一个本机加载程序来处理网站上发生的每个加载过程。
我正在使用插件:https://pub.dev/packages/flutter_inappwebview,它捕获大量 URL。所以部分完成了,但还剩下一件事。某些请求不会刷新网站上的屏幕。因此,我无法听到它,并且无论何时在后台工作以在搜索场景中获取数据或无论何时使用过滤器,都感觉什么都没有发生。
是否有任何可能的方法来监听在后台发生的内部进程以向用户显示加载程序?
我知道这个加载器应该在网络上实现,但它就是这样......
我已经尝试了 inappwebview 提供的所有功能,但似乎没有一个能解决问题。
【问题讨论】:
标签:
flutter
dart
webview
flutter-inappwebview
【解决方案1】:
您可以使用 androidShouldInterceptRequest 字段来拦截 HTTP webView 请求。
InAppWebView(
androidShouldInterceptRequest: // <--
(controller, request) async {
print(request);
},
...
initialOptions: InAppWebViewGroupOptions(
android: AndroidInAppWebViewOptions(
useShouldInterceptRequest: true, // <--
),
...
)
useShouldInterceptRequest:设置为 true 以能够在 androidShouldInterceptRequest 事件中收听。默认值为 false