addSingle<T> method
Will add instance to the module, if T is defined in
Implementation
void addSingle<T>(T instance, {String? tag}) {
if (tag == null) {
if (injectMap.containsKey(T)) {
Closable.closeWith(injectMap[T]);
}
injectMap[T] = SingleInstanceFactory<T>(instance);
} else {
var instanceFactory = injectMap[T];
if (instanceFactory == null) {
instanceFactory = SingleByTagInstanceFactory<T>();
injectMap[T] = instanceFactory;
}
if (instanceFactory is SingleInjectFactory<T>) {
// remove from single ad make it taggable factory
var oldSingleInjectFactory = instanceFactory;
instanceFactory = SingleByTagInstanceFactory<T>();
_injectMap[T] = instanceFactory;
if (oldSingleInjectFactory.localSingleton != null) {
final localSingleton = oldSingleInjectFactory.localSingleton;
if (localSingleton != null) {
(instanceFactory as SingleByTagInstanceFactory<T>)
.put(InjectTagFactory.defaultTag, localSingleton);
}
}
(instanceFactory as SingleByTagInstanceFactory<T>).put(tag, instance);
}
if (instanceFactory is SingleByTagInstanceFactory<T>) {
instanceFactory.put(tag, instance);
}
}
}