singleton<T> method

  1. @override
void singleton<T>({
  1. String? name,
  2. required T factory(
    1. ServiceContainer container, [
    2. Map<String, dynamic>? options
    ]),
  3. bool eager = false,
})
override

Implementation

@override
void singleton<T>({String? name, required T Function(ServiceContainer container, [Map<String, dynamic>? options]) factory,  bool eager = false }) {
  final key = _key<T>(name);

  if (_factories.containsKey(key) || _singletons.containsKey(key)) {
    throw ServiceContainerException.duplicateRegistration(type: T, name: name);

  }

  if (eager) {
    _eagerRegistrations[key] = true;
    _factories[key] = (container, [options]) => factory(container, options);
  } else {
    _factories[key] = (container, [options]) =>
    _singletons.putIfAbsent(key, () => factory(container, options) as Object)
    as T;
  }
}