flutter - 如何更新地图颤振/飞镖?地图是通过颤振中的引用还是按值更新?
问题描述
我有一张地图:
{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]);
}
地图是否在颤振/飞镖中通过引用复制?
解决方案
通常,var x = y
使 x 和 y 都指向同一个对象。如果您现在向 x 发送方法,它也会影响 y,因为它们不是两个不同的对象。因此,向 y 引用的地图添加一个值也会使相同的元素通过 x 可见。
推荐阅读
- swift - 当应用程序进入后台时如何暂停 Timer()
- javascript - 使用 Javascript .find() 似乎做了一些奇怪的强制,我似乎无法确定
- c# - 无法在 Mac OS X 上的 C# 命令行进程中使用 *(星号)
- javascript - Error no Jest:这通常意味着您正在尝试导入 Jest 无法解析的文件,例如它不是纯 JavaScript
- c++ - 可以在基类中定义复制构造函数并仍然处理派生类的情况吗?
- mysql - #1143 - 表 'character_sets' 中的列 'default_collation_id' 拒绝用户 'mysql.infoschema'@'localhost' 的 SELECT 命令
- reactjs - 运行 ESLint 时出错:正则表达式标志无效
- c# - 如何使用 thread.abort()
- c# - .Net Core - 使用不同响应回调服务的多个请求
- ansible - Ansible - 使用动态清单脚本时,主机是否有等效的 ansible_group_priority?