在我的Flutter-Dart项目中,我有一个map(myMap),它包含嵌套的列表和map,这些嵌套结构还可以包含列表或map。这些结构中的数据是动态的,来自服务器,因此很难预测它们的长度或值。myMap的一个说明性示例如下:
Map<String, dynamic> myMap = {
'key': {
'key': [1, 2, 3],
'key2': {
'key': 23,
'subKey': {
'nestedKey': [4, 5, {'deepKey': {'finalList': [9, 10, {'ultraKey': [11, 12]}]}}]
}
}
},
'key2': {
'key': [1, 2, 3, {'dsf': [1, 2, {'superKey': [3, 4, {'megaKey': [5, 6]}]}]}],
'key2': {
'key': 23,
'fdasd': [
{
'nestedList': [
7,
8,
{
'deepKey': {
'finalList': [9, 10, {'ultraKey': [11, 12, {'ultimateKey': [13, 14]}]}]
}
}
]
}
]
}
}
};
字符串
现在,我需要创建另一个map(myMap 2)=(myMap),它完全独立于myMap。仅仅赋值myMap 2 = myMap就创建了一个引用,导致一个中的更改影响另一个。同样,使用Map.of(myMap)不能实现嵌套列表和map的独立性;对myMap中嵌套结构的修改会反映在myMap 2中。
我目前使用的是手动方法,包括遍历myMap并使用List.of()或Map.of()有条件地复制列表或Map。然而,由于从服务器接收的数据的动态和不可预测性,这种解决方案并不是最佳的。
是否有一个简洁有效的一行程序或方法,确保所有项目的完全独立性,包括myMap中的嵌套结构和其中的嵌套结构?
感谢您的指导。
1条答案
按热度按时间mm5n2pyu1#
你总是可以
jsonDecode(jsonEncode(data))
来获取任何具有有效的.toJson和.fromJson方法的深度克隆。