我有以下代码块,我要返回一个列表
static Future<List<Map<String, dynamic>>>? getData(String category,
List<String> levels, int levelIndex, bool completed) async {
List<Map<String, dynamic>> allData = [];
try {
//String? email = FirebaseAuth.instance.currentUser!.email;
var doc = await FirebaseFirestore.instance
.collection("skills")
.doc(category)
.collection(levels[levelIndex])
.get();
allData.addAll(doc.docs.map((doc) => doc.data()).toList());
return allData;
} catch (e) {
return [];
}
}
列表的一个字段是一个名为“completedBy”的字符串列表,我正在尝试过滤数据,以便它仅返回包含或不包含“completedBy”列表中特定字符串的项目。所以,基本上在概念上看起来像这样:
static Future<List<Map<String, dynamic>>>? getData(String category,
List<String> levels, int levelIndex, bool completed) async {
List<Map<String, dynamic>> allData = [];
try {
String? email = FirebaseAuth.instance.currentUser!.email;
var doc = await FirebaseFirestore.instance
.collection("skills")
.doc(category)
.collection(levels[levelIndex])
.get();
allData.addAll(doc.docs.map((doc) => doc.data()).toList());
if (completed) {
return allData.where((e) => e["completedBy"].contains(email)).toList();
} else {
return allData.where((e) => e["completedBy"].doesNotContain(email)).toList();
}
} catch (e) {
return [];
}
}
除了方法“contains”和“doesNotContain”对于动态类型不存在。我该怎么做?