createProject function
Entry point untuk perintah flast create
Implementation
Future<void> createProject({bool force = false}) async {
_checkWindowsShell();
// === Step 1: Tanya informasi project ===
final projectName = _askProjectName();
final allowOverwrite = await confirmOverwrite(projectName, force: force);
if (!allowOverwrite) {
print('❌ Project creation cancelled.');
exit(0);
}
final org = _askOrg();
final platforms = _askPlatforms();
final androidLang = _askAndroidLang();
final iosLang = _askIosLang();
final useFvm = _askUseFvm();
// === Step 2: Setup project ===
final shell = Shell();
final flutterCmd = useFvm ? 'fvm flutter' : 'flutter';
await _cloneStarterKit(shell, projectName);
await _updatePubspecName(projectName);
await safeDelete('.git');
await shell.run('git init');
if (File('.env.example').existsSync()) {
await runCopy('.env.example', '.env');
}
// Bersihkan platform lama dari starter kit
for (var platform in ['android', 'ios', 'web', 'windows', 'linux', 'macos']) {
await safeDelete(platform);
}
if (useFvm) {
await installFlutterFromFvmrc(shell);
}
// Buat ulang project dengan konfigurasi user
await shell.run(
'$flutterCmd create --org $org --platforms ${platforms.join(",")} '
'--android-language $androidLang --ios-language $iosLang .',
);
// === Step 3: Post setup ===
await runPostSetup(shell: shell, useFvm: useFvm);
// === Step 4: Print next steps ===
_printNextSteps(projectName, useFvm);
}