removeDependencyWhere method

void removeDependencyWhere(
  1. bool test(
    1. Entity entity,
    2. Dependency<Object> dependency
    ), {
  2. Entity groupEntity = const DefaultEntity(),
})

Implementation

@pragma('vm:prefer-inline')
void removeDependencyWhere(
  bool Function(Entity entity, Dependency dependency) test, {
  Entity groupEntity = const DefaultEntity(),
}) {
  final group = _state[groupEntity];
  if (group == null) return;
  final initialSize = group.length;
  group.removeWhere((typeEntity, dependency) {
    final drop = test(typeEntity, dependency);
    if (drop) _detachFromTypeIndex(typeEntity, groupEntity);
    return drop;
  });
  if (group.length == initialSize) return; // Nothing removed.
  // Match the invariant established by removeDependencyExact /
  // removeDependencyK: prune the group when it empties so `groupEntities`
  // doesn't expose ghost keys, and notify listeners.
  if (group.isEmpty) {
    _state.remove(groupEntity);
  }
  _fireOnChange();
}