retainWhere method

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

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

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

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

Throws an UnsupportedError if this is a fixed-length list.

Implementation

@override
void retainWhere(bool Function(T element) test) {
  _context.conditionallyRunInAction(() {
    final removedItems = _list.where((_) => !test(_)).toList(growable: false);

    _list.retainWhere(test);
    _notifyListUpdate(0, null, removedItems);
  }, _atom);
}