我正在映射Firestore集合中的Stream,并且正在使用await-for对其进行迭代,但是循环永远不会结束。
这是我的返回Stream
final _userGroups = Firestore.instance.collection('groups');
Stream<List<String>> getGroupNames() {
Stream<QuerySnapshot> snapshots = _userGroups.snapshots();
return snapshots.map((snapshot) => snapshot.documents.map((doc) {
return doc.data['name'].toString();
}).toList());
}
我的简单测试函数使用await-for来计算Stream中返回的项目(我的实际用例比较复杂,但是在这里测试我的理智)。
final _userGroups = Firestore.instance.collection('groups');
Future<int> getUserGroupCount() async {
int count;
final groupNamesStream = getGroupNames();
try {
await for (var groupNames in groupNamesStream) {
for (var groupName in groupNames) {
count++;
}
}
} catch (e) {
return count;
}
return count;
}
不会引发异常。奇怪的是,即使groupNames列表有两个项目,其循环也只会迭代一次。 (count ++断点仅到达一次。)
使用调试器,将鼠标悬停在值上,所有内容看起来都很不错。调试控制台中没有错误。
我是流媒体新手,所以可能缺少明显的东西吗?