我正在从sqlite
数据库中查询,并在类型为List<Map<String, dynamic>>
的people变量中得到结果。此变量是不可变的,无法对其进行操作。因此,我正在尝试将此变量映射到另一个具有相同数据类型的名为mPeople
的变量。我正在尝试在以下代码中执行此操作。
List<Map<String, dynamic>> people = [];
List<Map<String, dynamic>> mPeople = [];
Database db;
db = await openDatabase(path, version: 1);
people = await db.rawQuery("SELECT * FROM people");
mPeople = Map<String, dynamic>.from(people);
for(var i=0; i< firebaseIds.length; i++){
mPeople.removeWhere((item) => item['id'] == firebaseIds[i]);
}
但是我说
A value of type 'Map<String, dynamic>' can't be assigned to a variable of type 'List<Map<String, dynamic>>'.
时出错。我不明白为什么会这样。任何帮助将不胜感激。谢谢
最佳答案
您可以像这样在 map 列表中进行克隆,然后将每个 map 转换为新 map ,然后将结果转换为列表:
mPeople = people.map((m) => Map.of(m)).toList();
但是,由于您将只使用此列表来稍后删除内容,因此仅确保此新列表不包含不需要的元素会更有效。因此,您可以正确地进行如下操作:
final mPeople = people
.where((item) => !firebaseIds.contains(item['id']))
.map((m) => Map.of(m))
.toList();
关于dart - 将不可变的List <Map <String,dynamic >>映射到其他变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61153649/