WebKitWebViewController
WebKitWebViewController 类是一个基于 WebKit API 的 PlatformWebViewController 实现。该类通过封装 WebKit 的功能,提供了丰富的接口来控制和操作 WebView,使得开发者可以方便地在 Flutter 应用中使用 WebView。
构造函数
WebKitWebViewController(PlatformWebViewControllerCreationParams params):构造函数,初始化 WebView 并设置观察者和委托。
WebKitWebViewController(PlatformWebViewControllerCreationParams params)
// 如果传入 params 是 PlatformWebViewControllerCreationParams,则转为 WebKitWebViewControllerCreationParams
: super.implementation(params is WebKitWebViewControllerCreationParams
? params
: WebKitWebViewControllerCreationParams
.fromPlatformWebViewControllerCreationParams(params)) {
// 加载进度监听
_webView.addObserver(_webView, keyPath: 'estimatedProgress', /* */);
// URL监听
_webView.addObserver(_webView, keyPath: 'URL', /* */);
final WeakReference<WebKitWebViewController> weakThis =
WeakReference<WebKitWebViewController>(this);
// 创建 createUIDelegate
_uiDelegate = _webKitParams.webKitProxy.createUIDelegate(
instanceManager: _webKitParams._instanceManager,
onCreateWebView: /* */,
requestMediaCapturePermission: /* */,,
runJavaScriptAlertDialog: /* */,,
runJavaScriptConfirmDialog: /* */,,
runJavaScriptTextInputDialog:/* */,
);
_webView.setUIDelegate(_uiDelegate);
}
加载内容
loadFile(String absoluteFilePath):加载本地文件。loadFlutterAsset(String key):加载 Flutter 资源。loadHtmlString(String html, {String? baseUrl}):加载 HTML 字符串。loadRequest(LoadRequestParams params):加载网络请求。
JavaScript 通道
addJavaScriptChannel(JavaScriptChannelParams javaScriptChannelParams):添加 JavaScript 通道。removeJavaScriptChannel(String javaScriptChannelName):移除 JavaScript 通道。
导航控制
currentUrl():获取当前 URL。canGoBack():检查是否可以后退。canGoForward():检查是否可以前进。goBack():后退。goForward():前进。reload():重新加载。
缓存和存储
clearCache():清除缓存。clearLocalStorage():清除本地存储。
JavaScript 执行
runJavaScript(String javaScript):运行 JavaScript 代码。runJavaScriptReturningResult(String javaScript):运行 JavaScript 代码并返回结果。
页面信息
getTitle():获取页面标题。
滚动控制
scrollTo(int x, int y):滚动到指定位置。scrollBy(int x, int y):滚动指定距离。getScrollPosition():获取滚动位置。
其他设置
setAllowsBackForwardNavigationGestures(bool enabled):设置是否允许手势导航。setBackgroundColor(Color color):设置背景颜色。setJavaScriptMode(JavaScriptMode javaScriptMode):设置 JavaScript 模式。setUserAgent(String? userAgent):设置用户代理。enableZoom(bool enabled):启用或禁用缩放。setPlatformNavigationDelegate(WebKitNavigationDelegate handler):设置导航委托。setOnConsoleMessage(void Function(JavaScriptConsoleMessage consoleMessage) onConsoleMessage):设置控制台消息回调。setOnPlatformPermissionRequest(void Function(PlatformWebViewPermissionRequest request) onPermissionRequest):设置权限请求回调。setOnScrollPositionChange(void Function(ScrollPositionChange scrollPositionChange)? onScrollPositionChange):设置滚动位置变化回调。setInspectable(bool inspectable):设置是否可检查。getUserAgent():获取用户代理。setOnJavaScriptAlertDialog(Future<void> Function(JavaScriptAlertDialogRequest request) onJavaScriptAlertDialog):设置 JavaScript 警告对话框回调。setOnJavaScriptConfirmDialog(Future<bool> Function(JavaScriptConfirmDialogRequest request) onJavaScriptConfirmDialog):设置 JavaScript 确认对话框回调。setOnJavaScriptTextInputDialog(Future<String> Function(JavaScriptTextInputDialogRequest request) onJavaScriptTextInputDialog):设置 JavaScript 文本输入对话框回调。
本文作者:Maeiee
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!
