一、简介
-
在使用
webview_flutter 4.10.0
插件时iOS
平台报错webview_flutter_wkwebview.AuthenticationChallengeResponse
。 -
解决方案:
-
方式一:问题解决方案,问题是从
webview_flutter_wkwebview 3.18.0
后出现的:1、可以降低
webview_flutter
版本,使用依赖webview_flutter_wkwebview 3.17.0
的版本。2、或直接修改
pubspec.lock
里面webview_flutter_wkwebview
依赖版本调整到3.17.0
。 -
方式二:改成使用
flutter_inappwebview
插件。
-
二、插件列表
1. webview_flutter
- 官方插件,是 Flutter 官方提供的 WebView 插件,适用于基本的 WebView 使用。
优点:
- 官方支持,文档和社区活跃。
- 简单易用,适合基础的 WebView 需求。
- 跨平台支持(Android 和 iOS)。
缺点:
- 功能较为基础,不支持复杂的自定义配置(例如 JavaScript 双向通信等)。
- 在一些特定平台(如 iOS)的稳定性可能不如其他插件。
- 对页面加载进度的控制不如其他插件丰富。
适用场景:适用于需要嵌入网页的简单应用或功能较少的 WebView 用例。
2. flutter_inappwebview
- 提供比
webview_flutter
更全面的功能,支持更多自定义和控制。
优点:
- 支持更多的 WebView 控制功能,如 JavaScript 和 Flutter 之间的双向通信。
- 提供更丰富的事件监听、页面加载进度、错误处理。
- 支持定制请求头、拦截请求、缓存控制等高级功能。
- 支持 Android 和 iOS。
缺点:
- 插件较大,可能会增加应用的体积。
- 配置和使用相对复杂,学习曲线较陡。
- 可能出现一些兼容性问题,特别是在新版本的 Flutter 中。
适用场景:适用于需要复杂 WebView 交互、双向通信、请求拦截等自定义需求的应用。
3. flutter_webview_plugin
- 一个第三方插件,提供简单的 WebView 嵌入方式,并且在 Android 和 iOS 上表现良好。
优点:
- 使用简单,适合快速嵌入 WebView。
- 支持基本的页面导航控制,适用于一般的 WebView 使用场景。
- 比
webview_flutter
更加灵活,提供更丰富的回调方法。
缺点:
- 更新不如
webview_flutter
和flutter_inappwebview
活跃,可能会面临维护和兼容性问题。 - 不如
flutter_inappwebview
强大,缺少某些高级功能,如自定义请求头、双向通信等。 - 不再维护(已被弃用)。
适用场景:适用于需要简单 WebView 功能的应用,但不需要太多自定义。
4. webview_flutter_plus
webview_flutter
的一个增强版插件,提供了更多功能和改进。
优点:
- 基于
webview_flutter
,因此它继承了webview_flutter
的稳定性,并且增强了它的功能。 - 支持自定义 JavaScript 通道,更多的控制选项。
- 改进了页面加载进度的控制。
- 比
webview_flutter
提供了更多自定义功能。
缺点:
- 插件更新不如
flutter_inappwebview
频繁,部分功能不如flutter_inappwebview
强大。 - 仍然是基于
webview_flutter
,因此功能上和flutter_inappwebview
相比有所局限。
适用场景:适合需要在 webview_flutter
基础上获得更多控制和增强功能的应用。
5. flutter_webview_plugin_plus
- 基于
flutter_webview_plugin
的一个增强版本,提供更多功能。
优点:
- 相比
flutter_webview_plugin
提供了更多的功能和稳定性改进。 - 简单易用,适用于快速集成 WebView。
缺点:
- 可能会出现更新滞后的问题。
- 仍然不如
flutter_inappwebview
提供那么多功能。
适用场景:适用于需要 flutter_webview_plugin
功能的同时,提升功能的应用。
6. flutter_wkwebview
- 一个较少使用的 WebView 插件,主要用于 iOS。
优点:
- 主要针对 iOS 的
WKWebView
,对于 iOS 平台优化较好。
缺点:
- 不支持 Android,平台限制。
- 功能比较单一,适用范围较窄。
适用场景:如果应用只在 iOS 上运行,并且需要基本的 WebView 功能,这可能是一个轻量的选择。
总结对比
插件名称 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
webview_flutter | 官方支持,简单易用,跨平台支持 | 功能较基础,定制化不足 | 基础 WebView 使用场景 |
flutter_inappwebview | 高度自定义,丰富的功能,双向通信支持,拦截请求等 | 插件较大,配置复杂,可能有兼容性问题 | 复杂 WebView 需求,双向通信等 |
flutter_webview_plugin | 使用简单,适用于快速嵌入 WebView,更多控制 | 更新不活跃,功能相对单一,已弃用 | 简单 WebView 功能的应用 |
webview_flutter_plus | 增强版 webview_flutter ,更多控制选项,改进的加载进度控制 | 功能较 flutter_inappwebview 稍弱 | webview_flutter 功能增强需求 |
flutter_webview_plugin_plus | flutter_webview_plugin 的增强版,更多功能和改进 | 更新滞后,不如 flutter_inappwebview 强大 | 需要 flutter_webview_plugin 功能增强 |
flutter_wkwebview | 针对 iOS 的优化,简单使用 | 仅支持 iOS,功能单一 | 仅限 iOS 应用,基础 WebView 需求 |
结论
- 简单 WebView 需求:选择
webview_flutter
或flutter_webview_plugin
。 - 复杂 WebView 需求:选择
flutter_inappwebview
,它提供最丰富的功能。 - 仅需要 iOS 的支持:如果只是针对 iOS 平台,可以考虑
flutter_wkwebview
,但功能较单一。