如何在Flutter-Dart中创建具有动态数据的嵌套Map的独立副本?

dwbf0jvd  于 5个月前  发布在  Flutter
关注(0)|答案(1)|浏览(68)

在我的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中的嵌套结构和其中的嵌套结构?
感谢您的指导。

mm5n2pyu

mm5n2pyu1#

你总是可以jsonDecode(jsonEncode(data))来获取任何具有有效的.toJson和.fromJson方法的深度克隆。

相关问题