put<T extends Object> method

void put<T extends Object>(
  1. T instance, {
  2. String? tag,
  3. bool override = false,
})

Implementation

void put<T extends Object>(T instance, {String? tag, bool override = false}) {
  final key = _generateKey<T>(tag);
  if (!override && _dependencies.containsKey(key)) {
    if (kDebugMode) {
      print(
          'WARNING (BlueWhale): Dependency $key already registered. Use override:true if intentional.');
    }
    return;
  }
  if (_dependencies.containsKey(key)) {
    _unregisterRouteAware(_dependencies[key]?._instance);
    _dependencies[key]?.dispose();
  }
  // Use lazySingleton with a constant factory to allow recreation if disposed
  _dependencies[key] = _DependencyInjector<T>.lazySingleton(() => instance);

  // We notify initialization immediately for 'put' because the instance exists
  _dependencies[key]!.instance;

  if (kDebugMode) print('INFO (BlueWhale): $key registered.');
}