如果这是一个愚蠢的问题,我先向你道歉,我已经创建了一个文件并将其存储在我的"assets"子目录中,它与我的lib目录和pubspec.yaml文件处于同一级别,我已经在代码中设置了"assets/ExerData.json"的相对路径(见下文)。
当我运行保存为如下所示的scratch.dart文件的代码,连接到Galaxy Nexus API 29模拟器时,它只能告诉我"找不到文件!"
import 'dart:io';
import 'package:flutter/services.dart';
String filePath = "assets/ExerData.json";
void main() {
performTasks();
}
void performTasks() {
if (checkFileExists(filePath)) {
readFile(filePath);
} else {
print("Can't find file");
}
}
bool checkFileExists(path) {
bool result = File(path).existsSync();
print(result.toString());
return result;
}
Future<String> readFile(path) async {
return await rootBundle.loadString(filePath);
}
我用以下条目填充了我的pubspec.yaml文件:
assets:
- assets/ExerData.json
我期望它找到我的文件,使用rootbundle.loadstring(path)读取它,并将结果字符串打印到控制台。
正如我所说,它所做的只是打印"找不到文件"。
我非常感谢你在这件事上的帮助!
先谢了!
3条答案
按热度按时间h43kikqp1#
事实证明,程序逻辑还没有完成必要绑定的初始化。
我在主类的第一行调用了方法
WidgetsFlutterBinding.ensureInitialized()
,一切都开始按预期工作。感谢每一个看过我问题的人!
下面是一个与绑定XML文件有关的类似问题:如何在flutter中读取XML文件?
t5zmwmid2#
rootBundle
包含生成应用程序时随应用程序打包的资源。在pubspec
中的assets:
下指定的所有文件都随应用程序打包。你可以通过将rootBundle.loadString()
Package 在try{} catch(){}
块中来检查文件是否存在。或
文件是dart类。它需要读取文件的绝对或相对路径。您可以将
File
与path_provider
一起使用,以从当前文件系统获取绝对路径。例如,在Android上:
印刷品
'/data/user/0/com.soliev.file_demo/app_flutter'
pgccezyw3#
用途:
参考:How to load JSON assets into a Flutter App?