parseRoute method
Implementation
Future<MetaRoute?> parseRoute(Units units) async {
if (!path
.basename(units.parsed.path)
.contains(RegExp(r'[._]controller\.dart$'))) {
return null;
}
final resolved = await units.resolved();
final classVisitor = ControllerVisitor();
resolved.libraryElement.accept(classVisitor);
if (!classVisitor.hasController) {
return null;
}
final (:element, path: routePath, :constructor, :params, :methods, :type) =
classVisitor.values;
return MetaRoute(
path: routePath,
filePath: units.parsed.path,
className: element.name ?? (throw Exception('Class name is null')),
params: params,
element: element,
constructorName:
constructor.name ?? (throw Exception('Constructor name is null')),
methods: methods,
type: type,
annotationsFor:
({required List<OnMatch> onMatch, NonMatch? onNonMatch}) =>
getAnnotations(
element: element,
onMatch: onMatch,
onNonMatch: onNonMatch,
),
);
}