我正在努力寻找一种解决方案来构建一个显示"最近的文件"的小部件.

要查找这些文件,我有以下内容

Future<List<File>> findFiles(String prefix) async {
    List<File> files = [];
    await for (var entity
        in directory.list(recursive: true, followLinks: false)) {
      File file = File(entity.path);
      if (p.extension(file.path) == ".json") {
        print("Found in:" + entity.path);
        if (p.basename(file.path).startsWith(prefix)) files.add(file);
      }
    }

    return files;
  }

然后我把它称为使用 var files = await FileManager().findFiles("test");

但我不确定如何建立一个列表视图来显示每个文件的名称,因为它是一个future ,需要等待.

有什么建议吗?

推荐答案

要以ListView来显示函数的结果,因为您的函数返回Future,所以您应该使用FutureBuilder:

FutureBuilder(
      future: findFiles("bla"),
      builder: (BuildContext context, AsyncSnapshot<List<File>> snapshot) {
        if (snapshot.hasData) {
          return ListView.builder(
            itemCount: snapshot.data?.length,
            itemBuilder: (BuildContext context, int index) {
              return Text(snapshot.data?[index].path);
            },
          );
        } else if (snapshot.hasError) {
          return Text("Error: ${snapshot.error}");
        }
        return CircularProgressIndicator();
      },
    )

Here是Flutter 翼团队在YouTube上解释FutureBuilder的视频

Flutter相关问答推荐

类型int不是可迭代动态tmdbapi类型的子类型<>

try 在Flutter应用程序中传递变量到FirebaseFirestore Where子句

无效字符(位于字符68处)flutter—update—... europe-west1.firebasedatabase.app/

底部导航栏项目在抖动中不更改 colored颜色

Flutter 中的多页表现

如何知道当前屏幕是否处于抖动状态?

使索引[0]在ListViewBuilder中返回字符串1

Flutter:无法构建iOS应用程序-找不到PigeonParser.h文件

构建方法中的性能声明小部件

在flutter中实现类似3D的可滚动堆叠分页列表

StateNotifer正在riverpod中提供初始状态值(bool)

为什么我的Flutter 动画过渡没有发生?

Flutter 包错误:此应用程序使用的是已弃用的 Android 嵌入版本

我想在文本结束后显示分隔线.它会在第一行、第二行或第三行结束

如何删除图像边框半径与其父容器边框半径之间的空白

如何扫描来自给定链接或按钮的重定向中的所有 URL?

我可以使用 Future 来填充Text() 小部件而不是在 Flutter 中使用 FutureBuilder 吗?

如何在 Flutter 中的页面加载上的 Listview 上应用自动滚动

如何在Flutter 中水平滚动堆叠定位的小部件?

我已经删除了我的 .android 密钥库,但我没有使用它,如何生成一个新的?