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
相关产品推荐
相关产品推荐

