如何在dart中对地图列表进行深度复制?

如何在dart中对地图列表进行深度复制?,dart,Dart,如何在dart中的地图列表上进行深度复制。以下是我尝试过的代码: void main() { List<Map> arr1 = [ {'f1': 1, 'f2': 2} ]; List<Map> arr2 = [...arr1]; arr2[0]["f1"] = 11; print("$arr1 $arr2"); } void main(){ 列表arr1=[ {'f1':1,'f2':2} ]; 列表

如何在dart中的地图列表上进行深度复制。以下是我尝试过的代码:

void main() {
  List<Map> arr1 = [
    {'f1': 1, 'f2': 2}
  ];
  List<Map> arr2 = [...arr1];
  arr2[0]["f1"] = 11;
  print("$arr1 $arr2");
}
void main(){
列表arr1=[
{'f1':1,'f2':2}
];
列表arr2=[…arr1];
arr2[0][“f1”]=11;
打印($arr1$arr2”);
}

我希望
arr1[0][“f1”]
1
而不是
11

深度复制数据结构没有内置功能

如果您知道类型,那么就相当容易:

var copy=[用于(原始的var e)…e];
也就是说,在每个级别上使用
作为
/
,直到最后一级,然后将其分散


对列表/映射结构进行深度复制的通用函数可能无法编写。最大的问题是,没有可用的方法仅基于现有映射的运行时类型,使用与现有映射相同的类型参数创建新的
Map
。在
List
上有一个
toList
,可以创建相同类型的列表,但在
Map
上没有
toMap
。因此,您需要编写复制操作,使其与要复制的实际类型相匹配,而您不能一般地这样做。

如果我混淆了任何人,请原谅。我想做一个深入的模仿谢谢你的帮助你的回答帮助了我<代码>列表arr2=[for(arr1中的变量e){…e}]