retainWhere method

  1. @override
void retainWhere(
  1. Test<E> test
)

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(Test<E> test) {
  if (!growable) {
    throw UnsupportedError('Cannot remove values from a fixed-length list.');
  }
  var removed = 0;
  for (var i = 0; i < length + removed; i++) {
    if (!test(elements[i - removed])) {
      elements.removeAt(i - removed);
      _labels.removeAt(i - removed);
      removed++;
    }
  }
}