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

Flutter无法通过相对路径找到Json文件的问题求助

问题解决:Flutter中无法读取Assets文件的原因及修复方案

核心问题分析

你错误地使用了dart:io的File类来检查Flutter Assets文件的存在。Flutter的Assets会被打包到应用程序包内部,并非设备文件系统中的独立文件,因此File(path).existsSync()无法定位到Assets路径,必然返回false。同时,你的代码未初始化Flutter框架绑定,直接调用rootBundle.loadString可能因框架未就绪而失败。

修复步骤及代码

  1. 移除基于File的存在检查逻辑,改用异步加载+异常处理的方式处理文件读取
  2. 手动初始化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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:25:49