You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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),
    );
  }
}

验证步骤

  1. 保存所有修改
  2. 停止当前模拟器运行,重新编译项目
  3. 重启模拟器后加载页面

内容的提问来源于stack exchange,提问作者Im Onforum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:59:55