首页 > 解决方案 > 如何更新地图颤振/飞镖?地图是通过颤振中的引用还是按值更新?

问题描述

我有一张地图:

{0: {0:"a",1:"b"}}

现在,单击颤动中的按钮时,我想将地图复制到新键。所以应该是

{0: {0:"a",1:"b"},1: {0:"a",1:"b"}}

现在,如果我向键 1 添加一个新值,它也会反映到键 0。

所以而不是

{0: {0:"a",1:"b"},1: {0:"a",1:"b",2:"c"}}

它成为了

{0: {0:"a",1:"b",2:"c"},1: {0:"a",1:"b",2:"c"}}
 Map<int,dynamic> tempMap=new HashMap();
 tempMap={...pageMap};
 var tempValue=pageMap[pageIndex];
 tempMap[(pageIndex+1)]= tempValue;
 pageMap.clear();
for (var key in tempMap.keys) {
    pageMap.putIfAbsent(key, () => tempMap[key]);
}

地图是否在颤振/飞镖中通过引用复制?

标签: flutterdartflutter-web

解决方案


通常,var x = y使 x 和 y 都指向同一个对象。如果您现在向 x 发送方法,它也会影响 y,因为它们不是两个不同的对象。因此,向 y 引用的地图添加一个值也会使相同的元素通过 x 可见。


推荐阅读