addAll method

  1. @override
void addAll(
  1. Map<K, V> other
)
override

Adds all key/value pairs of other to this map.

If a key of other is already in this map, its value is overwritten.

The operation is equivalent to doing this[key] = value for each key and associated value in other. It iterates over other, which must therefore not change during the iteration.

final planets = <int, String>{1: 'Mercury', 2: 'Earth'};
planets.addAll({5: 'Jupiter', 6: 'Saturn'});
print(planets); // {1: Mercury, 2: Earth, 5: Jupiter, 6: Saturn}

Implementation

@override
void addAll(Map<K, V> other) {
  if (other.isEmpty) return;
  final target = value;
  final entries = identical(target, other)
      ? List<MapEntry<K, V>>.of(other.entries)
      : other.entries;
  var changed = false;
  for (final entry in entries) {
    if (!target.containsKey(entry.key) || target[entry.key] != entry.value) {
      target[entry.key] = entry.value;
      changed = true;
    }
  }
  if (changed) {
    refresh();
  }
}