retainWhere method

  1. @override
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

@override
void retainWhere(bool Function(E element) test) {
  _Node<E>? current = _head;
  while (current != null) {
    final next = current.next; // Store next before potential removal
    if (!test(current.value)) {
      remove(current.value); // Use existing remove method
    }
    current = next;
  }
}