跳转到内容

iOS 和 macOS

iOS 和 macOS 由 webview_flutter_wkwebview ^3.25.0 提供。

平台包 webview_flutter_wkwebview
Controller WebKitWebViewController
Widget WebKitWebViewWidget
Delegate WebKitNavigationDelegate
Cookie manager WebKitWebViewCookieManager
引擎 WKWebView
最低 iOS 13.0+
最低 macOS 10.15+
final params = WebKitWebViewControllerCreationParams(
allowsInlineMediaPlayback: true,
mediaTypesRequiringUserAction: const <PlaybackMediaTypes>{},
limitsNavigationsToAppBoundDomains: false,
javaScriptCanOpenWindowsAutomatically: true,
);
参数 作用
mediaTypesRequiringUserAction 哪些媒体类型需要用户手势。
allowsInlineMediaPlayback 允许 HTML5 视频内联播放。
limitsNavigationsToAppBoundDomains 启用 App-Bound Domains。
javaScriptCanOpenWindowsAutomatically 控制 JS 自动打开窗口。
API 作用
setAllowsBackForwardNavigationGestures 启用滑动前进/后退。
setAllowsLinkPreview 控制 link preview。
setOnCanGoBackChange 监听 canGoBack 变化。
setInspectable 启用 WebKit inspect。
loadFileWithParams(WebKitLoadFileParams) 加载本地文件并设置可读范围。
await (controller.platform as WebKitWebViewController).loadFileWithParams(
WebKitLoadFileParams(
absoluteFilePath: '/Users/me/site/index.html',
readAccessPath: '/Users/me/site',
),
);

readAccessPath 必须覆盖 HTML 引用的本地资源。

macOS 与 iOS 共用 Dart 包,但部分 UIKit 风格属性在 macOS 没有 bridge:

区域 限制
scroll view 部分 scroll view 方法未实现。
background/opaque 部分 UIKit 属性在 macOS 不可用。
link preview 取决于系统支持。

跨 Apple 平台代码应做好平台判断和 UnimplementedError 处理。