singleton<T> method
void
singleton<T>({
- String? name,
- required T factory(
- ServiceContainer container, [
- Map<
String, dynamic> ? options
- 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;
}
}