run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
Future<int> run() async {
try {
logger.info('Creating a new Flutter MVVM project...');
logger.space(1);
final args = argResults?.rest ?? [];
String projectName = args.isNotEmpty ? args[0] : _promptForProjectName();
final projectDir = Directory(projectName);
if (projectDir.existsSync()) {
logger.err('Error: Directory "$projectName" already exists.');
return ExitCode.ioError.code;
}
// Step 1: Run `flutter create projectName`
if (!_createFlutterProject(projectName)) {
return ExitCode.software.code;
}
// Step 2: Ask user for networking library
final networkingLib = _promptForNetworkingLibrary();
// Step 3: Add basic directories
_addBasicDirectories(projectName);
// Step 4: Modify necessary files using templates
_generateBasicFiles(projectName, networkingLib);
logger.info('Project created successfully!');
return ExitCode.success.code;
} catch (e) {
logger.err('Error creating project: $e');
return ExitCode.software.code;
}
}