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

dwbf0jvd  于 2024-01-04  发布在  Flutter
关注(0)|答案(1)|浏览(170)

在我的Flutter-Dart项目中,我有一个map(myMap),它包含嵌套的列表和map,这些嵌套结构还可以包含列表或map。这些结构中的数据是动态的,来自服务器,因此很难预测它们的长度或值。myMap的一个说明性示例如下:

  1. Map<String, dynamic> myMap = {
  2. 'key': {
  3. 'key': [1, 2, 3],
  4. 'key2': {
  5. 'key': 23,
  6. 'subKey': {
  7. 'nestedKey': [4, 5, {'deepKey': {'finalList': [9, 10, {'ultraKey': [11, 12]}]}}]
  8. }
  9. }
  10. },
  11. 'key2': {
  12. 'key': [1, 2, 3, {'dsf': [1, 2, {'superKey': [3, 4, {'megaKey': [5, 6]}]}]}],
  13. 'key2': {
  14. 'key': 23,
  15. 'fdasd': [
  16. {
  17. 'nestedList': [
  18. 7,
  19. 8,
  20. {
  21. 'deepKey': {
  22. 'finalList': [9, 10, {'ultraKey': [11, 12, {'ultimateKey': [13, 14]}]}]
  23. }
  24. }
  25. ]
  26. }
  27. ]
  28. }
  29. }
  30. };

字符串
现在,我需要创建另一个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方法的深度克隆。

相关问题