addAll method

  1. @override
void addAll(
  1. Iterable<E> elements, {
  2. bool notifyListeners = true,
})
override

Adds all elements to this set.

Equivalent to adding each element in elements using add, but some collections may be able to optimize it.

final characters = <String>{'A', 'B'};
characters.addAll({'A', 'B', 'C'});
print(characters); // {A, B, C}

Implementation

@override
void addAll(Iterable<E> elements, {bool notifyListeners = true}) {
  final originalLength = value.length;
  value.addAll(elements);

  if (notifyListeners) {
    if (isObserved && value.length > originalLength) {
      if (hasEvent || hasChangeEvent) {
        final events = <int, E>{};
        for (var i = originalLength; i < value.length; i++) {
          final value = elements.elementAt(i - originalLength);
          events.addAll(<int, E>{i: value});
          notifyChangeListeners(
              CollectionChangeEvent(CollectionEventType.addition, i, value));
        }

        if (events.isNotEmpty) {
          notifyEventListeners(
              CollectionEvent<int, E>(CollectionEventType.addition, events));
        }
      }

      this.notifyListeners(value);
    }
  }
}