unregister<T extends Object> method
Unregisters a dependency object by its type T or name.
Implementation
void unregister<T extends Object>({Type? type, final String? name}) {
if (type != null && T.toString() != 'Object' && type.toString() != T.toString()) {
throw WeaverException(
'calling unregister argument and passing conflicting arguments for the type of the '
'object that needs to be unregistered is forbidden!, please specify the type correctly only using'
'generic type argument or value argument. eg: either call weaver.unregister<TYPE>() or weaver.unregister(type: type). '
'calling weaver.unregister<TYPE_1>(type: TYPE_2) is forbidden',
);
}
type = type ?? T;
if (name == null && type.toString() == 'Object') {
throw WeaverException(
'Type or name is required to unregister the dependency object. passed type of "$type" is not accepted',
);
} else if (name != null && type.toString() == 'Object') {
_dependencyMap.removeWhere((final dependencyKey) => dependencyKey.name == name);
notifyObservers();
} else {
final dependencyKey = DependencyKey(type: type, name: name);
if (isRegistered(type: type, name: name)) {
_dependencyMap.remove(dependencyKey);
} else {
log('⚠️ Tried to unregister an object that is not registered. '
'There is no object registered with type: $type ${name != null ? "and name:$name" : ""}');
}
notifyObservers();
}
}