我如何在Flutter中获取包含其id的Firestore项目作为快照,这些项目位于另一个表的数组中?我正在附加代码,这些代码非常适合我执行“get”操作,但我无法找到一种方法将其转换为Stream,并使用StreamBuilder而不是FutureBuilder将其打印在屏幕上,并随每次更改更新它
Future<List<DocumentSnapshot<Map<String, dynamic>>>?> getPools() async {
List<DocumentSnapshot<Map<String, dynamic>>> pools = [];
final user = FirebaseAuth.instance.currentUser;
final DbUser? dbUser = await dbUserAPI.getDbUser(user);
if (dbUser != null) {
for (var pool in dbUser.pools) {
final result = await FirebaseFirestore.instance
.collection('pools')
.doc(pool)
.get();
pools.add(result);
}
return pools;
}
if (kDebugMode) {
print('Error al leer el usuario de FireStore');
}
return null;
}
在dbUsersAPI.getDbUsers函数中,我从“Users”表中检索用户数据,然后得到值“.pools”,它是一个String数组,其中包含我要检索的项的ID。
我已经尝试了许多方法,并发挥流,但我总是得到一个未来或流时,我只想得到一个流的项目,我正在过滤。
我尝试过where子句,但它没有更新值,我认为问题是我不知道如何管理dbUsersAPI.getDbUsers函数返回的Future。
1条答案
按热度按时间66bbxpm51#
为了使用StreamBuilder显示数据,您需要通过生成以
.snapshots()
方法而不是.get()
方法结尾的请求来获取流中的数据。一个很简单的情况是,