removeAll method

  1. @override
void removeAll(
  1. Iterable<Object?> elements, {
  2. bool notifyListeners = true,
})
override

Removes each element of elements from this set.

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

Implementation

@override
void removeAll(Iterable<Object?> elements, {bool notifyListeners = true}) {
  if (notifyListeners && (hasEvent || hasChangeEvent)) {
    final events = <int, E>{};
    final values = toList(growable: false);
    for (var i = 0; i < values.length; i++) {
      for (var element in elements) {
        if (values[i] == element) {
          value.remove(element);
          final key = i;
          events.addAll(<int, E>{key: element as E});
          notifyChangeListeners(CollectionChangeEvent(
              CollectionEventType.removal, key, element));
        }
      }
    }
    if (events.isNotEmpty) {
      notifyEventListeners(
          CollectionEvent<int, E>(CollectionEventType.removal, events));
    }
  } else {
    value.removeAll(elements);
  }

  if (notifyListeners) this.notifyListeners(value);
}