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

Flutter中WebView依赖异常:WebView方法未定义报错求助

问题排查与解决

核心原因

你遇到的问题是因为webview_flutter 4.0.0及以上版本对API做了重大调整:原WebView组件被重命名为WebViewWidget,javascriptMode参数也从组件构造函数移到了WebViewController的配置中,旧写法不再兼容新版本依赖。

具体修复步骤

1. 确认依赖版本

检查pubspec.yaml中webview_flutter的版本,如果是4.x+,按以下方式修改代码;如果要保留旧写法,可以降级到3.x版本(不推荐,建议适配新版本)。

2. 修改代码适配新版本

更新State类中的代码,先创建WebViewController并配置参数,再使用WebViewWidget替代原WebView:

import 'package:webview_flutter/webview_flutter.dart';
...

class _UnamRadioHomePageState extends State<UnamRadioHomePage> {
  // 新增WebViewController配置
  final WebViewController _webViewController = WebViewController()
    ..setJavaScriptMode(JavaScriptMode.unrestricted)
    ..loadRequest(Uri.parse('https://iono.fm/s/194'));

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Unam Radio'),
      ),
      body: Column(
        children: [
          Expanded(
            // 替换WebView为WebViewWidget,并传入控制器
            child: WebViewWidget(controller: _webViewController),
          ),
          Expanded(
            child: Container(
              padding: const EdgeInsets.all(16),
              child: _getPageForItem(_selectedItem),
            ),
          ),
        ],
      ),
      drawer: UnamRadioDrawer(
        selectedItem: _selectedItem,
        onItemSelected: (item) {
          setState(() {
            _selectedItem = item;
          });
          Navigator.pop(context);
        },
      ),
    );
  }
}

3. 同步依赖

执行命令更新依赖:

flutter pub get

其他可能的排查点

  • 如果导入语句报错,确认pubspec.yaml中已正确添加webview_flutter依赖,且没有拼写错误。
  • 清理项目缓存后重新运行:flutter clean && flutter run

内容的提问来源于stack exchange,提问作者Prince Sein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:43:22