flutter - 使用具有一个未来的 FutureBuilder 取决于另一个未来的结果
问题描述
我构建我的 firebase firestore 和存储的方式是,一旦我在 firestore 中获得一个项目的 uid,我就会将该 id 放入我的存储并检索 downloadUrls 列表以显示图像。因此检索 downloadUrls 将取决于 uid,其中两个是具有依赖关系的异步调用。
所有这些都是为了显示一个非常标准的卡片小部件,底部带有图片和描述。
在我的FutureBuilder
future
参数中,我尝试使用Future.wait
api 但后来我不知道如何将从一个未来检索到的信息传递到下一个未来。
解决方案
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
.
推荐阅读
- javascript - 如何在 vue.js 的模板中获取 body html 元素?
- python - 如何链接在两个列表之间创建连接?
- computer-vision - 图像嵌入稀疏性
- java - 在 0mq 套接字上运行的 java 计时器线程的可能替代方案
- javascript - 使用 map、reduce、filter 为 JavaScript 优化嵌套循环
- python - {“title”:“不支持的媒体类型”,无论我尝试什么都会出错:I(
- hierarchical-clustering - 如何从 HDBSCAN 中的 condensed_tree pandas 输出中获取选定的集群?
- statistics - 时间序列数据的收益递减
- java - 如何处理 Android webview 中的“mailto:”和“tel:”链接
- ios - 通过共享扩展从另一个应用程序打开我的应用程序