Flutter Android应用读取打包本地文件报错,求排查解决方法
解决Flutter读取Assets文件报错的问题
错误原因
Flutter打包后的assets文件并非存放在设备的文件系统路径中,File类只能访问设备本地文件系统的路径,直接用assets/data.txt作为路径会找不到文件。
正确读取方式
使用Flutter的rootBundle(来自package:flutter/services.dart)来读取assets资源:
- 导入依赖包
import 'package:flutter/services.dart' show rootBundle;
- 编写读取方法
Future<String> loadAsset() async { return await rootBundle.loadString('assets/data.txt'); }
- 按钮点击调用示例
ElevatedButton( onPressed: () async { try { String content = await loadAsset(); print(content); // 在这里处理读取到的文件内容 } catch (e) { print('读取失败: $e'); } }, child: const Text('读取文件'), )
额外检查项
- 确认
pubspec.yaml中的assets配置格式正确,注意缩进(需为2个空格,作为flutter:的子项):
flutter: assets: - assets/data.txt
配置完成后必须执行flutter pub get让配置生效。
- 确认assets目录在项目根目录,文件路径拼写完全一致(虽然Android不严格区分大小写,但保持一致可避免不必要的问题)。
内容的提问来源于stack exchange,提问作者Pfredd
相关产品推荐
相关产品推荐

