在一个flutter项目中,我正在尝试进行CollectionGroup
查询。但类型搞砸了。这是我的代码:
Stream<Either<JobPostFailure, List<JobPost>>> watchAppliedJobPosts({
required String seamanId,
}) async* {
yield* _firestore
.collectionGroup(ConstStrings.applications)
.where(ConstStrings.seamanId, isEqualTo: seamanId)
.snapshots()
.map((querySnapshot) {
return right(querySnapshot.docs.map((docSnapshot) {
final jobPostDocRef = docSnapshot.reference;
jobPostDocRef.snapshots().map((doc) {
final jobPost = JobPostDto.fromFirestore(doc).toDomain();
return jobPost;
});
}).toList());
});
}
我希望得到一个List<JobPost>
,但在return right(querySnapshot.docs.map((docSnapshot) {...
行出现以下错误:
参数类型'List<Null>'无法分配给参数类型'列表<JobPost>'。
虽然我返回List<JobPost>
,但错误显示它是List<Null>
。错误在哪里?如何解决这个问题?
您缺少一个return
关键字:
return /* <-- */ jobPostDocRef.snapshots().map((doc) {
也就是说,当方法中显然没有其他选项时,为什么要用Either
返回类型来复杂化这个函数?它总是返回right
,所以您不妨从返回类型中删除Either
。