Flutter WebView在iOS中无法运行但Android正常的问题排查
iOS模拟器中WebView无法加载的解决方案
问题分析
你的代码在Android设备运行正常,但iOS模拟器抛出PlatformException(unregistered_view_type, A UIKitView widget is trying to create a PlatformView with an unregistered type: < plugins.flutter.io/webview >错误,核心原因是iOS端的WKWebView平台视图未完成注册,属于webview_flutter_wkwebview插件初始化环节的问题。
修复步骤
1. 补全WKWebView初始化逻辑
在项目的main.dart中,添加WKWebView平台注册代码,放在runApp执行之前:
import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; void main() { // 注册WKWebView平台实现 if (WebViewPlatform.instance is WebKitWebViewPlatform) { WebKitWebViewPlatform.registerWith(); } runApp(const MyApp()); }
2. 简化WebViewController初始化代码
webview_flutter 4.x版本已支持直接创建WebViewController,无需手动区分平台参数,可将控制器初始化代码简化为:
@override void onInit() { super.onInit(); controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..setBackgroundColor(const Color(0x00000000)) ..setNavigationDelegate(NavigationDelegate( onNavigationRequest: (NavigationRequest request) { if (request.url.startsWith('https://www.youtube.com/')) { return NavigationDecision.prevent; } return NavigationDecision.navigate; }, )); }
3. 清理缓存并重新构建
执行以下操作确保依赖完全生效:
- 运行
flutter clean - 进入iOS目录,删除
Pods文件夹和Podfile.lock - 执行
pod install - 重新运行
flutter run
验证
完成上述步骤后重启iOS模拟器,WebView即可正常加载目标URL。
内容的提问来源于stack exchange,提问作者Fazle Rabbi Khan
相关产品推荐
相关产品推荐

