retainWhere method
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) {
if (lock) return _internal.retainWhere(test);
final removed = <int, T>{};
for (int index = 0; index < super.length; index++) {
if (!test(super[index])) removed[index] = super[index];
}
if (removed.isNotEmpty) {
lock = true;
added = const {};
this.removed = removed;
changed = const {};
_internal.retainWhere(test);
notifyListeners();
}
}