Cloud Firestore等待未来流连接用户使用用户id文档



我正在收听一个文档流,在每个文档中都有一个uid,我想用它来获取与该文档关联的用户配置文件。有点像连接,但firestore只是获取用户配置文件,这样我就有了与文档关联的最新用户配置文件。由于获取用户配置文件将是一个返回future的单独查询,那么在获取流的同时如何获取配置文件呢?到目前为止,我唯一的工作解决方案是在多个流构建器下嵌套未来构建器,但我需要一个更好的解决方案。下面是我的代码。

Stream<List<Tab>> get sentTabs {
return _db
.collection('tabs')
.where('sender', isEqualTo: user.uid)
.snapshots()
.map((list) => list.docs.map((doc) {
Tab tab = Tab.fromJson(doc.data(), doc.id);
// i'd like to fetch the associated user profile here // tab.shownUser = await getUser(tab.payerUID!);
return tab;
}).toList());

}

我多次遇到同样的问题,我发现最有用的解决方案正是您提出的:在StreamBuilder内使用FutureBuilder

Tab tab = Tab.fromJson(doc.data(), doc.id);
//Add a FutureBuilder
return FutureBuilder(
future: getUser(tab.payerUID!),
builder: (context, snapshot) {
//your logic here
}
return tab;
)

后来为了使它更优化,我使用了StreamProvider,因为我在代码的多个位置使用相同的流。

底线:没有什么神奇的,你需要查询数据库两次。

最新更新