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

Flutter Web读取文件失败求助:资源加载出现404错误

Flutter Web加载本地Assets文件404问题排查与解决

问题说明

已确认拼写无误,且在pubspec.yaml的assets段配置了目标文件,但加载时仍触发404错误:

执行热重启...等待Chrome调试服务连接...应用已在337ms内重启。加载资源时出错:Flutter Web引擎获取"assets/assets/rungFile.txt"失败。HTTP请求成功,但服务器返回HTTP状态码404。错误:无法加载资源:"assets/rungFile.txt"。该资源不存在或数据为空。

读取文件核心代码:

void readFile() async {
  String data = await rootBundle.loadString('assets/rungFile.txt');
  List<String> lines = const LineSplitter().convert(data);
  for (String line in lines) {
    List<String> words = line.split(',');
    Rung rung = Rung(
      name: words[0], 
      rungId: words[1], 
      done: bool.parse(words[2]), 
      boldTitle: bool.parse(words[3]), 
      info: words[4]
    );
    Rung.myList.add(rung);
  }
}

排查与解决步骤

1. 核对文件路径与pubspec配置

  • 确认本地文件位置:rungFile.txt需放在项目根目录的assets/文件夹下(路径为assets/rungFile.txt),不能嵌套在assets/assets/子目录中。
  • 检查pubspec.yaml的assets配置格式是否正确:
    flutter:
      assets:
        - assets/rungFile.txt
        # 若需加载整个assets目录,可替换为:
        # - assets/
    
    配置完成后必须执行flutter pub get,热重启无效时需完全停止应用后重新运行。

2. 避免路径前缀重复

Flutter Web打包时会自动处理assets路径,报错中出现的assets/assets/rungFile.txt说明路径存在重复前缀:

  • 不要在pubspec.yaml中配置- assets/assets/rungFile.txt这类重复路径。
  • 代码中保持加载路径为'assets/rungFile.txt',不要额外添加assets/前缀。

3. 清理缓存并重新构建

  • 执行flutter clean清理项目缓存。
  • 重新构建Web项目:flutter build web,再通过flutter run -d chrome启动,避免热重启导致的缓存残留问题。

4. 验证文件是否被正确打包

构建完成后,打开build/web/assets/目录,确认rungFile.txt存在且内容非空。若文件不在此目录,说明pubspec配置或本地文件路径有误。

5. 确保框架初始化后调用加载方法

rootBundle需在Flutter框架初始化完成后使用,建议将readFile()放在Widget的initState中调用:

@override
void initState() {
  super.initState();
  readFile();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:52:13