gpt4 book ai didi

dart - 将不可变的List >映射到其他变量

转载 作者:行者123 更新时间:2023-12-03 04:52:31 25 4
gpt4 key购买 nike

我正在从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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com