将新的一对添加到地图时,我捕获了以下错误。
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
。
答案 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',}