getNavigatorFileContent method
Implementation
String getNavigatorFileContent(
String screenName, String navigatorFileContent) {
String routeName = screenName.routeName;
if (navigatorFileContent.contains("abstract class RouteNavigator")) {
List lines = navigatorFileContent.replaceAll("\n\n", "\n").split("\n");
int index = lines.indexWhere(
(element) => element.contains("abstract class RouteNavigator"));
if (index != -1) {
String imports =
"import 'package:${PubspecUtils.instance.getAppName}/App/screens/$screenName/view/$screenName.dart';\nimport 'package:${PubspecUtils.instance.getAppName}/App/screens/$screenName/${CliDataProvider.instance.codePattern.value}/${screenName}_${CliDataProvider.instance.codePattern.value}.dart';";
lines.insert(index, "$imports\n\n");
}
navigatorFileContent = lines.join("\n");
//
RegExp regExp = RegExp(r'routes\s*=\s*{([^}]+)};');
Match? match = regExp.firstMatch(navigatorFileContent);
if (match == null) return navigatorFileContent;
String? matchData = match.group(0);
if (matchData == null) return navigatorFileContent;
String mapStringData =
matchData.replaceAll("routes = {", "").replaceAll("};", "").trim();
if (!mapStringData.endsWith(",")) {
mapStringData = "$mapStringData,";
}
String routes =
"routes = {${mapStringData}Routes.$routeName: (BuildContext context) => BlocProvider(create: (context) => ${CliDataProvider.instance.codePattern == CodePattern.bloc ? screenName.blocName : screenName.cubitName}(),child: const ${screenName.camelCase}(),)};";
navigatorFileContent = navigatorFileContent.replaceAll(matchData, routes);
return DartFormatter().format(navigatorFileContent);
}
return navigatorFileContent;
}