如何用WebView_Flutter加载HTML?加载YouTube遇错误求助
解决WebView_Flutter加载YouTube页面失败的问题
核心问题分析
你当前代码中设置了JavaScriptMode.disabled,但YouTube页面完全依赖JavaScript渲染内容,禁用JS是导致加载失败的直接原因。此外需确保平台配置符合要求。
分步解决方案
1. 启用JavaScript
修改WebViewController的JavaScript模式为启用状态:
final controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) // 改为启用JS ..loadRequest(Uri.parse('https://www.youtube.com/'));
2. 配置Android平台(推荐)
在android/app/src/main/AndroidManifest.xml中添加网络权限(若未添加):
<uses-permission android:name="android.permission.INTERNET" />
注:YouTube为HTTPS链接,Android 9+无需额外配置明文流量权限。
3. 配置iOS平台(推荐)
若iOS端仍加载异常,在ios/Runner/Info.plist中添加App Transport Security配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
完整修正代码
import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; // 重命名Widget避免与包内类冲突 class WebViewPage extends StatefulWidget { const WebViewPage({super.key}); @override State<WebViewPage> createState() => _WebViewPageState(); } class _WebViewPageState extends State<WebViewPage> { 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), ); } }
验证步骤
- 保存所有修改
- 停止当前模拟器运行,重新编译项目
- 重启模拟器后加载页面
内容的提问来源于stack exchange,提问作者Im Onforum
相关产品推荐
相关产品推荐

