retainWhere method

void retainWhere(
  1. bool test(
    1. E 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

void retainWhere(bool test(E element)) {
  for (int i = 0; i < length; i++) {
    if (test(_inner[i])) continue;

    final removed = _inner[i];
    _inner.removeAt(i);
    _changes.add(ListChange<E>.remove(removed, i));
    i--;
  }
}