【发布时间】:2020-12-07 12:59:40
【问题描述】:
我正在做一个 firebase 查询,它必须将对象列表作为流返回。因此,为了实现这一目标,我使用 Async* 等待我的循环 for 完成,然后再继续该过程。
但问题是,我的函数在If 条件下停止并且没有进入他的for 循环并且我的函数没有返回任何内容。
欢迎您的帮助。
这是我的代码
Stream<List<InfoCompagnie>> fetchCompanies(
String depart, String arrivee, String jour, int place) async* {
var q = await db.collection('DISPONIBILITE').snapshots();
await for (var q1 in q) {
for (var compagnies in q1.documents) {
var NomCompagnie = compagnies.data[firstCaseDate];
for (var compagnie in NomCompagnie) {
await for (var q2 in qq) {
if (q2.documents.isNotEmpty) {
//Making condition here
for (var data in q2.documents) {
await compagnieList
.add(infoCompagnie.value); //add Object here into list
}
yield compagnieList; //return stream data here
}//Function stopped here
}
}
}
}
}
【问题讨论】:
-
如果您删除了
if语句,您的代码可以正常工作吗? -
No @J.A.Hernández 它给我带来了一个错误,因为我们无法从空文档中迭代。
-
你不需要等待流,只需要等待。事实上,你可能根本不需要在这里等待
-
是 @lenz 删除 await 关键字后它起作用了。谢谢
-
谢谢@lenz 这很有帮助。
标签: flutter google-cloud-firestore async-await