在我的Flutter应用程序中,我有一些数据要使用。最初,我创建了一个变量并将这些数据存储在其中,但它变得太大并阻碍了代码的可读性。然后,我考虑创建一个.json文件,并将此JSON数据放入文件中的一个变量中,以便访问此数据。然而,我尝试了几种方法,在所有这些方法中,我都遇到了这个错误:“OS错误:没有这样的文件或目录,errno = 2”,说明找不到文件。
这是我的代码:
Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
Future<File> get _localFile async {
final path = await _localPath;
return File('$path/lib/layers/equipment_care.json');
}
Future<String> readCounter() async {
try {
final file = await _localFile;
// Read the file
final contents = await file.readAsString();
return contents.toString();
} catch (e) {
// If encountering an error, return 0
return "";
}
}
@override
Widget build(BuildContext context) {
readCounter().then((value) {
print(value);
});
return Container(
child: Scaffold(
appBar: _appBar(),
body: _body(),
),
);
}
字符串
在下图中,可以看到json文件路径(equipment_care. json),dart文件的路径(know_more_equipment_screen.dart)和flutter项目的文件。directory的路径。path返回以下内容:
/data/user/0/(censored)/app_flutter
型
文件的路径('$path/lib/layers/equipment_care. json')为
/data/user/0/(censored)/app_flutter/lib/layers/equipment_care.json
型
x1c 0d1x的数据
它要找的是最后一个链接,它没有返回任何东西。我真的很想知道为什么它找不到文件,我可能做错了什么,这样我就可以修复它。有人能帮帮忙吗?
注意:地址中的“censored”是因为我不能显示路径的特定部分,但在所有情况下都是一样的。
2条答案
按热度按时间enxuqcxy1#
我需要在pubspeck.yaml中的资产中添加json文件路径:
字符串
为了获取JSON数据,我这样做了:
型
在做了这个改动之后,我就能够从json文件中获取数据了
pbgvytdp2#
尝试添加path_provider包:
字符串
如果你解决了这个问题,请告诉我