ClientLifecycleComponent.fromClassElement constructor
ClientLifecycleComponent.fromClassElement(
- ClassElement element, {
- List<
DartType> typeArguments = const [],
Implementation
factory ClientLifecycleComponent.fromClassElement(
ClassElement element, {
List<DartType> typeArguments = const [],
}) {
final typeSubstitutions = buildTypeSubstitutionMap(element, typeArguments);
final genericTypeParameterNames = [
for (final typeParameter in element.typeParameters)
if (typeParameter.name case final name?) name,
];
Iterable<ClientLifecycleComponentMethod> methodsFromElement() sync* {
for (final method in element.methods) {
if (ClientLifecycleComponentMethod.fromElement(
method,
typeSubstitutions: typeSubstitutions,
)
case final componentMethod?) {
yield componentMethod;
}
}
}
final methods = methodsFromElement().toList();
final guards = <ClientLifecycleComponentMethod>[];
final middlewares = <ClientLifecycleComponentMethod>[];
final interceptors = (
pre: <ClientLifecycleComponentMethod>[],
post: <ClientLifecycleComponentMethod>[],
);
for (final method in methods) {
final _ = switch (true) {
_ when method.isGuard => guards.add(method),
_ when method.isMiddleware => middlewares.add(method),
_ when method.isInterceptorPre => interceptors.pre.add(method),
_ when method.isInterceptorPost => interceptors.post.add(method),
_ => null,
};
}
return ClientLifecycleComponent(
guards: guards,
middlewares: middlewares,
interceptors: interceptors,
instantiatedTypeArguments: typeSubstitutions.isNotEmpty
? typeArguments.map(ClientType.fromType).toList()
: const <ClientType>[],
genericTypeParameterNames: genericTypeParameterNames,
);
}