首页 > 解决方案 > 使用具有一个未来的 FutureBuilder 取决于另一个未来的结果

问题描述

我构建我的 firebase firestore 和存储的方式是,一旦我在 firestore 中获得一个项目的 uid,我就会将该 id 放入我的存储并检索 downloadUrls 列表以显示图像。因此检索 downloadUrls 将取决于 uid,其中两个是具有依赖关系的异步调用。

所有这些都是为了显示一个非常标准的卡片小部件,底部带有图片和描述。

在我的FutureBuilder future参数中,我尝试使用Future.waitapi 但后来我不知道如何将从一个未来检索到的信息传递到下一个未来。

标签: flutterdart

解决方案


Future.wait不是为了这个目的。它适用于独立的期货。如果您有两个期货,其中一个需要另一个的返回值来启动,请将它们都包装到一个期货中:

//First future for uid
Future<String> uid() async {
  return id;
}

//Second future for URL
Future<String> downloadURL(String uid) async {
  //Use the uid and get the download URL future
}

//Wrapper to combine them
Future<String> combined() async {
  final uid = await uid();
  return downloadUrl(uid);
}

然后你可以将combined未来传递给你的FutureBuilder.


推荐阅读