getK<T extends Object> method
Retrieves the dependency.
Implementation
Option<Resolvable<T>> getK<T extends Object>(
Entity typeEntity, {
Entity groupEntity = const DefaultEntity(),
bool traverse = true,
}) {
final g = groupEntity.preferOverDefault(focusGroup);
final option = getDependencyK<T>(
typeEntity,
groupEntity: g,
traverse: traverse,
);
if (option.isNone()) {
return const None();
}
UNSAFE:
{
final result = option.unwrap();
if (result.isErr()) {
return Some(Sync.err(result.err().unwrap().transfErr()));
}
final value = result.unwrap().value;
if (value.isSync()) {
return Some(value);
}
return Some(
Async(
() => value.async().unwrap().value.then((e) {
final value = e.unwrap();
registry.removeDependencyK(typeEntity, groupEntity: g).end();
final metadata = option.unwrap().unwrap().metadata.map(
(e) => e.copyWith(
preemptivetypeEntity: TypeEntity(Sync, [typeEntity]),
),
);
registerDependencyK(
dependency: Dependency(Sync.okValue(value), metadata: metadata),
checkExisting: false,
).end();
return value;
}),
),
);
}
}