removeDependency<T extends Object> method
Option<Dependency<T> >
removeDependency<T extends Object>({
- Entity groupEntity = const DefaultEntity(),
Removes the first dependency of type T
(or its subtypes) found under the specified groupEntity
.
If the group becomes empty after removal, the group itself is removed.
Implementation
Option<Dependency<T>> removeDependency<T extends Object>({
Entity groupEntity = const DefaultEntity(),
}) {
final group = _state[groupEntity];
if (group == null) {
return const None();
}
final key = group.entries
.firstWhereOrNull((e) => e.value.value is Resolvable<T>)
?.key;
if (key == null) {
return const None();
}
final dependency = group.remove(key);
if (dependency == null) {
return const None();
}
if (group.isEmpty) {
removeGroup(groupEntity: groupEntity);
}
UNSAFE:
onChange.ifSome((self, some) => some.unwrap()()).end();
return Some(dependency.transf());
}