makeController static method
Creates a new Controller.
Implementation
static Future makeController(String className, String value,
{String folderPath = controllersFolder,
bool forceCreate = false,
String? creationPath}) async {
String name = className.replaceAll(RegExp(r'(_?controller)'), "");
ReCase nameReCase = ReCase(name);
// create missing directories in the project
await createDirectoriesFromCreationPath(creationPath, folderPath);
// create file path
String filePath = createPathForDartFile(
folderPath: folderPath,
className: className,
prefix: "controller",
creationPath: creationPath);
await _makeDirectory(folderPath);
await _checkIfFileExists(filePath, shouldForceCreate: forceCreate);
String classImport =
"import '/app/controllers/${creationPath != null ? '$creationPath/' : ''}${nameReCase.snakeCase}_controller.dart';";
await MetroService.addToConfig(
configName: "decoders",
classImport: classImport,
createTemplate: (file) {
String controllerName = "${nameReCase.pascalCase}Controller";
if (file.contains(controllerName)) {
return "";
}
if (file.contains("final Map<Type, dynamic> controllers")) {
RegExp reg =
RegExp(r'final Map<Type, dynamic> controllers = \{([^}]*)\};');
String temp = """
final Map<Type, dynamic> controllers = {${reg.allMatches(file).map((e) => e.group(1)).toList()[0]}
$controllerName: () => $controllerName(),
};""";
return file.replaceFirst(
RegExp(r'final Map<Type, dynamic> controllers = \{([^}]*)\};'),
temp,
);
}
if (file.contains(
"final Map<Type, BaseController Function()> controllers")) {
RegExp reg = RegExp(
r'final Map<Type, BaseController Function\(\)> controllers = \{([^}]*)\};');
String temp = """
final Map<Type, BaseController Function()> controllers = {${reg.allMatches(file).map((e) => e.group(1)).toList()[0]}
$controllerName: () => $controllerName(),
};""";
return file.replaceFirst(
RegExp(
r'final Map<Type, BaseController Function\(\)> controllers = \{([^}]*)\};'),
temp,
);
}
RegExp reg = RegExp(
r'final Map<Type, BaseController> controllers = \{([^}]*)\};');
String temp = """
final Map<Type, BaseController> controllers = {${reg.allMatches(file).map((e) => e.group(1)).toList()[0]}
$controllerName: $controllerName(),
};""";
return file.replaceFirst(
RegExp(
r'final Map<Type, BaseController> controllers = \{([^}]*)\};'),
temp,
);
});
await _createNewFile(filePath, value, onSuccess: () {
MetroConsole.writeInGreen(
'[Controller] ${nameReCase.snakeCase}_controller created 🎉');
});
}