removeWhere method
Removes all entries of this map that satisfy the given test
.
final terrestrial = <int, String>{1: 'Mercury', 2: 'Venus', 3: 'Earth'};
terrestrial.removeWhere((key, value) => value.startsWith('E'));
print(terrestrial); // {1: Mercury, 2: Venus}
Implementation
@override
void removeWhere(_Predicate<K, V> predicate, {bool notifyListeners = true}) {
final map = notifyListeners ? _toMap() : null;
if (notifyListeners) {
final events = <K, V>{};
map!.forEach((key, value) {
if (predicate(key, value)) {
events.addAll(<K, V>{key: value});
this.value.remove(key);
notifyChangeListeners(
CollectionChangeEvent(CollectionEventType.removal, key, value));
}
});
if (events.isNotEmpty) {
notifyEventListeners(
CollectionEvent<K, V>(CollectionEventType.removal, events));
}
} else {
value.removeWhere(predicate);
}
if (notifyListeners && value.length != map!.length) {
this.notifyListeners(value);
}
}