removeMany method
Bulk delete — removes every key in keys. Returns the count
of keys actually removed (race-tolerant: input keys may
already have been deleted).
Implementation
@override
Future<int> removeMany(List keys, {bool skipCommit = false}) async {
if (keys.isEmpty) return 0;
final box = _getBox();
final present = <dynamic>{};
for (final k in keys) {
if (present.contains(k)) continue;
if (box.keys.contains(k)) present.add(k);
}
if (present.isEmpty) return 0;
// preRemoveHooks per present key.
for (final k in present) {
for (final hook in preRemoveHooks) {
await hook(k, skipCommit: skipCommit);
}
}
await box.deleteAll(present);
for (final k in present) {
_expiryIndex.remove(k);
}
// postRemoveHooks per present key.
for (final k in present) {
for (final hook in postRemoveHooks) {
await hook(k, skipCommit: skipCommit);
}
}
// Emit a KeyRemoved event per actually-removed key.
for (final k in present) {
_changesController.add(KeyRemoved(k as String));
}
return present.length;
}