如何在 Dart 中向 Map 添加新对?

How to add a new pair to Map in Dart?

我在将新对添加到地图时遇到以下错误。

我执行了以下代码。

Map<String, int> someMap = {
  "a": 1,
  "b": 2,
};

someMap["c"] = 3;

我应该如何向地图添加新的一对?

我也想知道如何使用Map.update

要在 Flutter 中声明地图,您可能需要 final:

final Map<String, int> someMap = {
  "a": 1,
  "b": 2,
};

那么,您的更新应该会起作用:

someMap["c"] = 3;

最后,update函数有两个参数需要传递,第一个是键,第二个是一个函数,它本身有一个参数(现有值)。示例:

someMap.update("a", (value) => value + 100);

如果您在所有这些之后打印地图,您将得到:

{a: 101, b: 2, c: 3}

您可以通过像这样指定新键将新对添加到 Dart 中的映射:

Map<String, int> map = {
  'a': 1,
  'b': 2,
};

map['c'] = 3;  // {a: 1, b: 2, c: 3}

根据评论,它对 OP 不起作用的原因是这需要在方法内部完成,而不是在顶层。

将新 key/value 作为地图添加到现有地图的另一种方法是,

oldMap.addEntries(myMap.entries);

这会将 oldMap 更新为 myMap 的 key/value;

Map<String, dynamic> someMap = {
  'id' : 10,
  'name' : 'Test Name'
};
someMethod(){
  someMap.addAll({
    'email' : 'test@gmail.com'
  });
}
printMap(){
  print(someMap);
}

确保您不能在声明的正下方添加条目。

我写了这个实用程序:

Map updateMap({
  /// Update a map with another map
  /// Example:
  ///   Map map1 = {'name': 'Omid', }
  ///   Map map2 = {'family': 'Raha', }
  ///   Map map = updateMap(data:map1, update:map2);
  /// Result:
  ///   map = {'name': 'Omid', 'family': 'Raha',}
  @required Map data,
  @required Map update,
}) {
  if (update == null) return data;
  update.forEach((key, value) {
    data[key] = value;
  });
  return data;
}

示例:

Map map1 = {'name': 'Omid', }
Map map2 = {'family': 'Raha', }

Map map = updateMap(data:map1, update:map2);

print(map);

{'name': 'Omid', 'family': 'Raha',}