appRouteSetter function
Implementation
void appRouteSetter(List<String> screens) {
String fieldGenerator(String screen) {
var name = screen.split('/').last.toPascalCase();
return 'GetPage(name: AppRoutes.${name.toCamelCase()}, page: () => const $name())';
}
var lib = Library(
(lib) => lib
..directives.add(Directive.import('package:get/get.dart'))
..directives.addAll(screens.map((e) => Directive.import('package:culina/screens/$e')))
..body.addAll([
Class(
(c) => c
..name = 'AppRoutes'
..fields.addAll(
[
...screens.map((e) => Field((f) => f
..static = true
..name = e.split('/').last.split('.').first.toCamelCase()
..assignment = Code('"/${e.split('.').first}"'))),
Field(
(b) => b
..name = 'routes'
..modifier = FieldModifier.final$
..static = true
..assignment = Code('''[
${screens.map((screen) => fieldGenerator(screen.split('.').first)).join(',\n')}
]'''),
),
],
),
),
]),
);
File('lib/utils/routes.dart')
.writeAsStringSync(formatter.format(DartEmitter.scoped(useNullSafetySyntax: true).visitLibrary(lib).toString()));
}