addInAppRoutesFile method

void addInAppRoutesFile()

Implementation

void addInAppRoutesFile() {
  // reading app_routes.dart file
  final file = File(FolderPaths.appRoutesFile);
  String content = file.readAsStringSync();

  // extract all imports from code
  final imports = RegExp(r'import.*?;')
      .allMatches(content)
      .map((e) => e.group(0))
      .toList();

  // extract routes from code
  final routesMatch =
      RegExp(r'static final routes = \[([\s\S]*?)\];').firstMatch(content);

  // if import length is 0, then add import
  if (imports.isEmpty) {
    content = '''
import '/app/routes/routes.dart';
import 'package:get/get.dart';
import 'routes.dart';

import '../modules/${nameFolder.toLowerCase()}/${nameFolder.toLowerCase()}_binding.dart';
import '../modules/${nameFolder.toLowerCase()}/${nameFolder.toLowerCase()}_view.dart';

''';
  } else {
    content = '''
  ${imports.join('\n')}
import '../modules/${nameFolder.toLowerCase()}/${nameFolder.toLowerCase()}_binding.dart';
import '../modules/${nameFolder.toLowerCase()}/${nameFolder.toLowerCase()}_view.dart';
import 'routes.dart';

''';
  }

  // if routesMatch is null, then add routes
  if (routesMatch == null) {
    content += '''
class AppPages {
static final routes = [
  GetPage(
    name: Routes.${nameFolder.toUpperCase()},
    page: () => const ${nameFolder.toCamelCase()}View(),
    binding: ${nameFolder.toCamelCase()}Binding(),
  ),
];
}
''';
  } else {
// extract routes from routesMatch
    final routes = routesMatch.group(1);

// add routes to content
    content += '''
class AppPages {
static final routes = [
  $routes
  GetPage(
    name: Routes.${nameFolder.toUpperCase()},
    page: () => const ${nameFolder.toCamelCase()}View(),
    binding: ${nameFolder.toCamelCase()}Binding(),
  ),
 ];
}
''';
  }

  // write content to app_routes.dart file
  file.writeAsStringSync(content);

  print("⚡ Add routes to app_routes.dart file\n\n");
}