Flutter无法通过相对路径找到Json文件的问题求助
问题解决:Flutter中无法读取Assets文件的原因及修复方案
核心问题分析
你错误地使用了dart:io的File类来检查Flutter Assets文件的存在。Flutter的Assets会被打包到应用程序包内部,并非设备文件系统中的独立文件,因此File(path).existsSync()无法定位到Assets路径,必然返回false。同时,你的代码未初始化Flutter框架绑定,直接调用rootBundle.loadString可能因框架未就绪而失败。
修复步骤及代码
- 移除基于
File的存在检查逻辑,改用异步加载+异常处理的方式处理文件读取 - 手动初始化Flutter绑定(非Widget环境下必须)
修正后的代码如下:
import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; String filePath = "assets/ExerData.json"; void main() { // 初始化Flutter绑定,确保rootBundle能正常工作 WidgetsFlutterBinding.ensureInitialized(); performTasks(); } void performTasks() async { try { String content = await readFile(filePath); print("文件内容:"); print(content); } on Exception catch (e) { print("无法读取文件:$e"); } } Future<String> readFile(path) async { return await rootBundle.loadString(path); }
额外注意事项
- 确认
pubspec.yaml的Assets配置缩进正确(YAML要求用2个空格缩进),路径拼写完全匹配文件实际位置 - 若在Widget组件中读取Assets,无需手动初始化
WidgetsFlutterBinding,因为Widget树初始化时会自动完成绑定
内容的提问来源于stack exchange,提问作者Jaime
相关产品推荐
相关产品推荐

