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

时间:2018-12-24 01:28:38

标签: dart flutter

将新的一对添加到地图时,我捕获了以下错误。

  • Variables must be declared using the keywords const, final, var, or a type name
  • Expected to find ;
  • the name someMap is already defined

我执行了以下代码。

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

someMap["c"] = 3;

如何将新的一对添加到地图?

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

6 个答案:

答案 0 :(得分:2)

要在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}

答案 1 :(得分:2)

您可以通过指定新的键,将新对添加到Dart中的地图:

-mabi=ieeelongdouble

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

答案 2 :(得分:2)

有两种将项(键值对)添加到地图的方法:

1。使用方括号[]

2。调用putIfAbsent()方法

Map map = {1: 'one', 2: 'two'};

map[3] = 'three';
print(map);

var threeValue = map.putIfAbsent(3, () => 'THREE');
print(map);
print(threeValue); // the value associated to key, if there is one

map.putIfAbsent(4, () => 'four');
print(map)

; 输出:

{1: one, 2: two, 3: three}
{1: one, 2: two, 3: three}
three
{1: one, 2: two, 3: three, 4: four}

您可以使用addAll()方法将另一个Map的所有键/值对添加到当前Map。

Map map = {1: 'one', 2: 'two'};
map.addAll({3: 'three', 4: 'four', 5: 'five'});
print(map);

输出:

{1: one, 2: two, 3: three, 4: four, 5: five}

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

将新键/值作为地图添加到现有地图的另一种方法是

WARNING: The scripts jupyter-migrate.exe, jupyter-troubleshoot.exe and jupyter.exe are installed in 'C:\Users\Name\AppData\Roaming\Python\Python38\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

这将用键/值oldMap.addEntries(myMap.entries); 更新oldMap

答案 5 :(得分:0)

我编写了这个实用程序:

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',}