flutter - 订阅流并在 flutter dart 中转发

标签 flutter firebase dart google-cloud-firestore stream

我使用firestore订阅这样的流:

db.collection(collection).snapshots().listen((QuerySnapshot snapshot) {
  // something
});

listen返回 StreamSubscription<QuerySnapshot>

现在我想编写一个方法,即订阅此流,这样当我得到新结果时我可以做一些事情。但相同的方法应该自行返回该数据流。我试过这个:

static Stream<QuerySnapshot> listenOnCollection(String collection) async* {
    db.collection(collection).snapshots().listen((QuerySnapshot snapshot) {
      // do something and now forward incoming snapshot
      yield snapshot;
    });
  }

这不会像yield那样工作甚至在内部上下文中也不为人所知。我怎样才能实现这个目标?非常感谢!

最佳答案

已测试,工作

static Stream<QuerySnapshot> listenOnCollection(String collection) async* {
    var stream = db.collection(collection).snapshots();
    await for(final snapshot in stream){
        yield snapshot;
    }
}

关于flutter - 订阅流并在 flutter dart 中转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65816945/

相关文章:

asynchronous - Flutter 提取异步到分隔符类和方法

flutter - 我如何将 Gradient 与 Flutter ThemeData backgroundColor 属性一起使用?

flutter - 抽象类不能被实例化!在身份验证 block 中

dart - 安装 flutter 时出错

swift - 将 Firestore 添加到我的项目会导致我的实时数据库查询出错

javascript - CORS BLOCKED 'Access-Control-Allow-Origin' Firebase 功能不允许

javascript - 如何打开 Firebase Javascript 客户端的登录?

dart - Dart 中 onPressed 属性后面的空括号是什么意思?

flutter - 如何在 Flutter 项目中从 Firebase 获取自动生成的 key ?

flutter - 为什么 dart 有 get 和 set 的特殊关键字?