假设我具有以下文件夹结构:
People
|
|── John
| |── img.png
| |── info.json
|── Craig
| |── img.png
| |── info.json
|── Daniel
| |── img.png
| |── info.json
我想获取info.json
文件夹中列出的每个文件夹的People
。为此,我编写了一个函数:
import 'dart:convert';
import "dart:io";
Directory folderPath = Directory("/storage/people/");
Future<List> getData() async {
List data = [];
folderPath.list().listen((e) async { //for every entity in directory
var path = e.path;
File infoFile = File("$path/info.json");
String infoString = await infoFile.readAsString();
Map info = jsonDecode(infoString);
data.add(item);
});
return data;
}
不幸的是,它不起作用。函数不等待循环结束,而是返回data
为空。
函数在循环完成后有什么方法可以返回数据吗?
答案 0 :(得分:0)
您应该尝试在folderPath.list()上使用本机for循环。 在Dart中,使用for循环会自动告诉函数等待结束,然后再返回任何内容。
答案 1 :(得分:0)
您可以尝试一下吗?
Directory folderPath = Directory("/storage/people/");
Future<List> getData() async {
List data = [];
List<FileSystemEntity> entities = folderPath.listSync();
for (FileSystemEntity e in entities) {
var path = e.path;
File infoFile = File("$path/info.json");
String infoString = await infoFile.readAsString();
Map info = json.decode(infoString);
data.add(info);
}
return data;
}