Flutter WebView中setJavaScriptMode.unrestricted使用报错求助
问题解决:Flutter WebView 初始化异常修复
错误根源分析
结合你的代码和报错信息,问题集中在三个核心点:
- 级联操作语法错误:
WebViewController初始化时,级联运算符..的使用格式错误,不能在实例化语句后单独换行拆分,必须紧跟在WebViewController()之后连写。 - URL缺少协议头:
Uri.parse('www.youtube.com')未指定https://或http://,会导致URL解析失败,WebView无法加载资源。 - 类名命名冲突:自定义的
WebView类与webview_flutter包内置的WebView组件重名,引发编译冲突。
修复后的完整代码
import 'package:webview_flutter/webview_flutter.dart'; // 修改类名,避免与包内WebView组件冲突 class MyWebView extends StatefulWidget { const MyWebView({super.key}); @override State<MyWebView> createState() => _MyWebViewState(); } class _MyWebViewState extends State<MyWebView> { // 修正级联操作语法,添加HTTPS协议头 final controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..loadRequest(Uri.parse('https://www.youtube.com')); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), body: WebViewWidget(controller: controller), ); } }
额外验证步骤
- 执行
flutter pub upgrade webview_flutter,确保依赖为最新稳定版; - 确认Android端
android/app/build.gradle中minSdkVersion保持20及以上; - iOS端若加载非HTTPS站点,需在
Info.plist中添加App Transport Security例外配置(使用HTTPS链接可跳过此步)。
内容的提问来源于stack exchange,提问作者Im Onforum
相关产品推荐
相关产品推荐

