订阅流并在 flutter dart 中转发
Subscribe to a stream and forward it in flutter dart
我使用 firestore
订阅这样的流:
db.collection(collection).snapshots().listen((QuerySnapshot snapshot) {
// something
});
listen
return一个StreamSubscription<QuerySnapshot>
现在我想写一个订阅这个流的方法,这样当我得到新的结果时我可以做一些事情。但是同样的方法应该 return 这个数据流本身。我试过这个:
static Stream<QuerySnapshot> listenOnCollection(String collection) async* {
db.collection(collection).snapshots().listen((QuerySnapshot snapshot) {
// do something and now forward incoming snapshot
yield snapshot;
});
}
这行不通,因为 yield
甚至在内部上下文中都不知道。我怎样才能做到这一点?非常感谢!
您可以映射和转换流,然后 return 它:
static Stream<QuerySnapshot> listenOnCollection(String collection){
return db.collection(collection).snapshots().map((QuerySnapshot snapshot) {
// do something and now forward incoming snapshot
return snapshot;
});
}
已测试,正常工作
static Stream<QuerySnapshot> listenOnCollection(String collection) async* {
var stream = db.collection(collection).snapshots();
await for(final snapshot in stream){
yield snapshot;
}
}
我使用 firestore
订阅这样的流:
db.collection(collection).snapshots().listen((QuerySnapshot snapshot) {
// something
});
listen
return一个StreamSubscription<QuerySnapshot>
现在我想写一个订阅这个流的方法,这样当我得到新的结果时我可以做一些事情。但是同样的方法应该 return 这个数据流本身。我试过这个:
static Stream<QuerySnapshot> listenOnCollection(String collection) async* {
db.collection(collection).snapshots().listen((QuerySnapshot snapshot) {
// do something and now forward incoming snapshot
yield snapshot;
});
}
这行不通,因为 yield
甚至在内部上下文中都不知道。我怎样才能做到这一点?非常感谢!
您可以映射和转换流,然后 return 它:
static Stream<QuerySnapshot> listenOnCollection(String collection){
return db.collection(collection).snapshots().map((QuerySnapshot snapshot) {
// do something and now forward incoming snapshot
return snapshot;
});
}
已测试,正常工作
static Stream<QuerySnapshot> listenOnCollection(String collection) async* {
var stream = db.collection(collection).snapshots();
await for(final snapshot in stream){
yield snapshot;
}
}