Combineer/voeg meerdere kaarten samen tot 1 kaart

Hoe kan ik 2 of meer kaarten in dart combineren/samenvoegen tot 1 kaart?
ik heb bijvoorbeeld zoiets als:

var firstMap = {"1":"2"};
 var secondMap = {"1":"2"};
 var thirdMap = {"1":"2"};

Ik wil:

var finalMap = {"1":"2", "1":"2", "1":"2"};

Antwoord 1, autoriteit 100%

u kunt de addAllmethode van het Mapobject

gebruiken

var firstMap = {"1":"2"};
var secondMap = {"2":"3"};
var thirdMap = {};
thirdMap.addAll(firstMap);
thirdMap.addAll(secondMap);
print(thirdMap);

Of

var thirdMap = {}..addAll(firstMap)..addAll(secondMap);

Bijwerken

Sinds dart sdk 2.3
U kunt spread-operator ...

. gebruiken

final firstMap = {"1":"2"};
final secondMap = {"2":"3"};
final thirdMap = {
   ...firstMap,
   ...secondMap,
};

Antwoord 2, autoriteit 8%

andere syntaxis met behulp van Map.addAll, Iterable.reduceen cascade-operator, voor het combineren van veel kaarten:

var combinedMap = mapList.reduce( (map1, map2) => map1..addAll(map2) );

voorbeeld live dartpad
https://dartpad.dartlang.org/9cd116d07d2f45a9b890b4b1186dcc5e


Antwoord 3, autoriteit 5%

Een andere optie is het gebruik van CombinedMapViewuit package:collection:

new CombinedMapView([firstMap, secondMap])

Er wordt geen samengevoegde kaart gemaakt, maar een Mapdie een weergavevan beide is.


Antwoord 4, autoriteit 3%

Ik heb een “single line”-oplossing bedacht voor een Iterable of Maps:

var finalMap = Map.fromEntries(mapList.expand((map) => map.entries));

Other episodes