等待-流未完成

时间:2020-07-22 15:29:18

标签: flutter dart google-cloud-firestore stream

我正在映射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 ++断点仅到达一次。)

使用调试器,将鼠标悬停在值上,所有内容看起来都很不错。调试控制台中没有错误。

我是流媒体新手,所以可能缺少明显的东西吗?

0 个答案:

没有答案