registerLazy<T extends Object> method

void registerLazy<T extends Object>(
  1. T callback(), {
  2. String? name,
})

Registers a lazy dependency that will be instantiated when first requested.

Implementation

void registerLazy<T extends Object>(final T Function() callback, {final String? name}) {
  final dependencyKey = DependencyKey(type: T, name: name);

  log('Registering object with $dependencyKey');

  if (isRegistered<T>() && !allowReassignment) {
    throw WeaverException(
      'Cannot register object of $dependencyKey because there is an instance already registered',
    );
  }

  if (_dependencyMap.containsKey(dependencyKey)) {
    final dependency = (_dependencyMap.find(dependencyKey)! as Dependency<T>);
    dependency.value = null;
    dependency.lazyInstantiateCallback = callback;
  } else {
    _dependencyMap.set(dependencyKey, Dependency<T>.lazy(callback));
  }

  notifyObservers();
}