我有一个Map列表,其中一个字段是一个名为“completed”的布尔值。我希望能够过滤Map,以便只获得“completed”为true或false的项。我当前的代码如下:
try {
String? email = FirebaseAuth.instance.currentUser!.email;
for (int i = startingIndex; i < endingIndex; ++i) {
var doc = await FirebaseFirestore.instance
.collection(email!)
.doc("goals")
.collection(Utils.goalsCategoriesDropdownItems[i])
.get();
if (doc.size > 0) {
allData.addAll(doc.docs.map((doc) => doc.data()).toList());
}
}
allData.sort(((a, b) {
Timestamp one = a["dueDate"];
Timestamp two = b["dueDate"];
return one.compareTo(two);
}));
return allData;
}
但是我不想返回allData,我想过滤一下看看所有的项是真还是假,所以我需要这样的代码:
if (completed == true) {
allData.map((e) => e["completed"] == true);
} else {
allData.map((e) => e["completed"] == false);
}
return allData;
1条答案
按热度按时间yhived7q1#
你的预期结果并不完全清楚,但有两种可能性:
a)如果你想检查你的
List
中的每个Map
是否都有一个值为true
的键completed
,你可以使用every:b)如果你想拥有一个只包含
Maps
的列表,其中包含的键为completed
,值为true
,你可以使用where: