reset method

void reset({
  1. bool force = false,
})

Deletes all non-permanent dependencies in this specific scope.

Parameters:

  • force: If true, also deletes permanent dependencies.

Implementation

void reset({bool force = false}) {
  final keysToRemove = <String>[];

  for (final entry in _registry.entries) {
    final info = entry.value;

    if (info.permanent && !force) continue;

    if (info.isInstantiated && info.instance is LevitScopeDisposable) {
      (info.instance as LevitScopeDisposable).onClose();
    }

    _notifyDelete(entry.key, info, 'reset');
    keysToRemove.add(entry.key);
  }

  for (final key in keysToRemove) {
    _registry.remove(key);
    _pendingInit.remove(key);
    if (_resolutionCache.isNotEmpty) {
      _resolutionCache.remove(key);
    }
  }

  // Clear fast-path registries
  _typeRegistry.clear();
  _typeResolutionCache.clear();
  _instanceCache.clear();
}