Future<List<FileSystemEntity>>'必须实现“Iterable”

问题描述 投票:0回答:1

我正在使用 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;
  }
flutter
1个回答
0
投票

您无法迭代

Future
。您需要使用
await
then
来获取实际值。

后者的一个例子

Future<List<String>> getFolderFiles() async {
  for(var file in await getFilesList()) {
      myfiles.add(file.path.split('/').last);
   }
  return myfiles;
}

请注意,这现在也返回一个

Future
,因为您无法神奇地将异步操作转变为同步操作。

© www.soinside.com 2019 - 2024. All rights reserved.