我正在使用 Dart 和 Flutter。
我收到消息:“for”循环中使用的 Future' 必须实现“Iterable”。
首先,我需要使用 async/await 获取文件列表。
该函数的返回类型:
Future<List<FileSystemEntity>>
在 getFolderFiles() 函数中,我需要循环遍历文件列表。
我需要同时拥有这两个功能。
您能否告知如何从 getFolderFiles() 函数访问
Future<List<FileSystemEntity>>
。
谢谢你
代码:
List<String> myfiles = [];
Future<List<FileSystemEntity>> getFilesList() async {
Directory dir = Directory('C:/test');
final List<FileSystemEntity> entities = await dir.list().toList();
return entities;
}
List<String> getFolderFiles() {
for(var file in getFilesList()) {
myfiles.add(file.path.split('/').last);
}
return myfiles;
}
您无法迭代
Future
。您需要使用 await
或 then
来获取实际值。
后者的一个例子
Future<List<String>> getFolderFiles() async {
for(var file in await getFilesList()) {
myfiles.add(file.path.split('/').last);
}
return myfiles;
}
请注意,这现在也返回一个
Future
,因为您无法神奇地将异步操作转变为同步操作。