对于文档列表,我试图检查Firestore中的布尔值是否为真。
在试图编译下面的代码时,我继续获取错误The argument type 'Future<bool> Function(bool, DocumentReference<Object?>)' can't be assigned to parameter type 'FutureOr<bool>'。
Future<bool> checkValInAllDocsIstrue(
List<DocumentReference> docs
) async {
return docs.fold(Future.value(true),
(Future<bool> acc, doc) => doc.get().then((doc_) {
Map<String, dynamic> fetchDoc = doc_.data() as Map<String, dynamic>;
bool val = fetchDoc["val"];
return acc.then((acc_) => acc_ && val);
}, onError: (e) => Future.error(e))
);
}在谷歌上,我知道acc_ && val是向FutureOr<bool>转换的,但我不知道如何将其转换到所需的Future<bool>。任何帮助都将不胜感激。
不幸的是,我不能更改函数的签名,因为这是给定的。
发布于 2022-11-21 19:42:59
我注意到,如果我显式地按如下方式强制转换返回类型(附带额外的代码清理),它就能工作。
Future<bool> checkValInAllDocsIstrue(
List<DocumentReference> docs
) async {
return docs.fold(true,
(bool acc, doc) => doc.get().then((doc_) =>
acc && doc_.data()["val"], onError: (e) => Future.error(e))
) as bool;
}我希望这对其他人有帮助。
https://stackoverflow.com/questions/74464807
复制相似问题