retainWhere method

  1. @override
void retainWhere(
  1. Test<E> test, {
  2. bool notifyListeners = true,
})
override

Removes all elements of this set that fail to satisfy test.

final characters = <String>{'A', 'B', 'C'};
characters.retainWhere(
    (element) => element.startsWith('B') || element.startsWith('C'));
print(characters); // {B, C}

Implementation

@override
void retainWhere(Test<E> test, {bool notifyListeners = true}) {
  if (notifyListeners) {
    final elementsToRemove = <E>{};
    for (var element in value) {
      if (!test(element)) {
        elementsToRemove.add(element);
      }
    }
    removeAll(elementsToRemove);
  } else {
    value.retainWhere(test);
  }
}