purge method
Removes lost references.
- If any WeakReference is not pointing to its target it will reduce the length of this list.
- If
force
istrue
will force a full check of entries. IFfalse
will only check entries if there's a new operation in the list. - Returns
true
if a full check of entries was performed.
Implementation
bool purge({bool force = false}) {
var now = DateTime.now();
if (_purgeModCount == _modCount && !force) {
var purgeElapsedTime = now.difference(_purgeTime);
if (purgeElapsedTime < purgeInterval) {
return false;
}
}
for (var i = 0; i < _entries.length;) {
var weakRef = _entries[i];
if (weakRef.target == null) {
_entries.removeAt(i);
} else {
++i;
}
}
++_modCount;
_purgeModCount = _modCount;
_purgeTime = now;
return true;
}