retainWhere method

  1. @override
void retainWhere(
  1. bool test(
    1. T element
    )
)
override

Removes all objects from this list that fail to satisfy test.

An object o satisfies test if test(o) is true.

final numbers = <String>['one', 'two', 'three', 'four'];
numbers.retainWhere((item) => item.length == 3);
print(numbers); // [one, two]

The list must be growable.

Implementation

@override
void retainWhere(bool Function(T element) test) {
  assert(ChangesNotifierHelperMixin.debugAssertNotDisposed(this));
  final List<T> removed = _list.where((element) => !test(element)).toList();
  for (final value in removed) {
    _list.remove(value);
  }
  notifyListeners(ListChangeDetails<T>(const [], removed, 0));
}