removeWhere method
Removes all objects from this list that satisfy test.
An object o satisfies test if test(o) is true.
final numbers = <String>['one', 'two', 'three', 'four'];
numbers.removeWhere((item) => item.length == 3);
print(numbers); // [three, four]
The list must be growable.
Implementation
@override
void removeWhere(bool Function(T element) test) {
_context.conditionallyRunInAction(() {
final removedElements = Queue<ElementChange<T>>();
for (var i = _list.length - 1; i >= 0; --i) {
final element = _list[i];
if (test(element)) {
removedElements.addFirst(
ElementChange(
index: i,
oldValue: element,
type: OperationType.remove,
),
);
_list.removeAt(i);
}
}
if (removedElements.isNotEmpty) {
_notifyElementsUpdate(removedElements.toList(growable: false));
}
}, _atom);
}