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,
:consumers,
: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,
consumers: consumers,
type: type,
annotationsFor:
({required List<OnMatch> onMatch, NonMatch? onNonMatch}) =>
getAnnotations(
element: element,
onMatch: onMatch,
onNonMatch: onNonMatch,
),
);
}