恢复类型不匹配:返回类型'Stream<List<Flight>>'不是"列表<Flight>"



在一个flutter项目中,我试图从一个方法返回一个对象列表作为流。这是我的代码:

Stream<List<Flight>> getLove(String seamanId) async* {
yield* _firestore
.collectionGroup(ConstStrings.seamans)
.where(ConstStrings.uid, isEqualTo: seamanId)
.limit(1)
.snapshots()
.map((querySnapshot) {
final docref = querySnapshot.docs[0].reference;
return docref.collection(ConstStrings.flights).snapshots().map(
(snapshot) => (snapshot.docs
.map((doc) => FlightDto.fromFirestore(doc).toDomain())
.toList()),
);
});
}

但是得到以下编译错误:

返回类型'Stream<列表<航班>gt;'不是'List<航班>'

如何解决此问题?

每次调用snapshots()方法时,它都会从数据库返回一个更新流。由于您再次调用嵌套在代码中的snapshots(),因此您实际上返回了一个Stream<Stream<List<Flight>>>

为了防止这种情况,您需要从内部读取返回单个事件/快照,方法是从流中获取特定事件(例如,调用first(,或者使用get()而不是snapshots()

最新更新