跳转到内容
WebView AllWebView All

Android

Android 由 webview_all_android ^1.3.6 提供,webview_all 将它注册为默认 Android 实现。

平台包 webview_all_android
Controller AndroidWebViewController
Widget AndroidWebViewWidget
Delegate AndroidNavigationDelegate
Cookie manager AndroidWebViewCookieManager
引擎 Android WebView
最低要求 API 24+
API 作用
AndroidWebViewController.enableDebugging 全局启用 WebView 调试。
setAllowFileAccess 控制 file URL 访问。
setMediaPlaybackRequiresUserGesture 控制媒体自动播放。
setTextZoom 设置文字缩放百分比。
setUseWideViewPort 启用 viewport meta/wide viewport。
setAllowContentAccess 控制 content:// 访问。
setGeolocationEnabled 启用定位。
setOnShowFileSelector 处理 <input type="file">
setGeolocationPermissionsPromptCallbacks 处理 Geolocation API 提示。
setCustomWidgetCallbacks 处理视频等全屏 custom view。
setMixedContentMode 控制 HTTPS 页面加载 HTTP 内容。
isWebViewFeatureSupported 查询 AndroidX WebView 功能。
setPaymentRequestEnabled 开启 Payment Request API。
setInsetsForWebContentToIgnore 控制传给网页的 window insets。
await (controller.platform as AndroidWebViewController)
.setMixedContentMode(MixedContentMode.neverAllow);

neverAllow 是生产环境推荐值。

await (controller.platform as AndroidWebViewController)
.setOnShowFileSelector((FileSelectorParams params) async {
return <String>['/sdcard/Download/file.png'];
});

FileSelectorMode 包括 openopenMultiplesave

getCookies 先按分号拆分,再只按每条 Cookie 的第一个等号拆分,因此能保留 值中的 = 和编码内容。非法百分号编码会按原文返回,不会让整次查询失败;结果 使用请求 URL 的 host 和 /

Android native 代码可通过 WebViewFlutterAndroidExternalApiFlutterPluginBinding 入口获取插件持有的 WebView;旧 FlutterEngine 重载保留但已弃用。binding 入口使用 engine plugin registry 实现,因此仍兼容 Flutter 3.35。

  • Android WebView postUrl 不支持 POST 自定义 headers。
  • grant() WebView 权限不等于系统运行时权限,宿主应用仍需自己请求。
  • Payment Request 取决于 AndroidX WebKit、系统 WebView/Chrome 版本和 manifest queries。
  • Android 插件会根据宿主工程的 Android Gradle Plugin 选择 Kotlin 集成方式: AGP 8 及以下使用 Kotlin Gradle Plugin,AGP 9 及以上使用 Built-in Kotlin, 从而兼容旧版 Flutter 工程并避免与新版 Android 构建冲突。