resolve method
Returns information needed to write .template.dart files.
Implementation
Future<ReflectableOutput> resolve(LibraryElement library) async {
final registerClasses = <ReflectableClass>[];
final registerFunctions = <DependencyInvocation<ExecutableElement>>[];
for (final unit in _allUnits(library)) {
for (final type in unit.element.classes) {
final reflectable = _resolveClass(type);
if (reflectable != null) {
registerClasses.add(reflectable);
}
if (recordInjectableFactories) {
registerFunctions.addAll(_resolveFunctions(type.methods));
}
}
if (recordInjectableFactories) {
registerFunctions.addAll(_resolveFunctions(unit.element.topLevelFunctions));
}
}
var urlsNeedingInitReflector = const <String>[];
// Only link to other ".initReflector" calls if either flag is enabled.
var conditionalVariants = const <String, String>{};
if (recordInjectableFactories || recordComponentFactories) {
urlsNeedingInitReflector = await _resolveNeedsReflector(library);
conditionalVariants = _resolveConditionalVariants(
library,
urlsNeedingInitReflector,
);
}
return ReflectableOutput(
urlsNeedingInitReflector: urlsNeedingInitReflector,
conditionalVariants: conditionalVariants,
registerClasses: registerClasses,
registerFunctions: registerFunctions,
);
}