reset method
void
reset(
[ - bool excludeValidation = false
])
Implementation
void reset([bool excludeValidation = false]) {
final log = _log;
final root = ConfigService.root;
final config = ConfigService.load(excludeValidation);
log.info('🧹 Starting full project reset...');
// 1. Platform Reset
if (config.platforms.contains('android')) {
try {
AndroidService.reset(config: config, logger: log);
} catch (e) {
log.warn('⚠️ Android reset issue: $e');
}
}
if (config.platforms.contains('ios')) {
try {
IOSService.reset(config: config, logger: log);
} catch (e) {
log.warn('⚠️ iOS reset issue: $e');
}
}
if (config.platforms.contains('macos')) {
try {
MacOSService.reset(config: config, logger: log);
} catch (e) {
log.warn('⚠️ macOS reset issue: $e');
}
}
// 2. Main Dart Restoration
_restoreMainDart(root, log, config);
// 3. File Cleanup
final allPossibleOrphans = FileService.getOrphanedFlavors([]);
if (allPossibleOrphans.isNotEmpty) {
log.info(
'🗑️ Removing orphaned flavor files: ${allPossibleOrphans.join(", ")}',
);
FileService.cleanupFlavors(allPossibleOrphans.toList());
}
_cleanupEnvFiles(root, config, log);
final configFile = File(p.join(root, config.appConfigPath));
if (configFile.existsSync()) {
configFile.deleteSync();
}
final flavorConfigFile = File(p.join(root, 'flavor_cli.yaml'));
if (flavorConfigFile.existsSync()) {
flavorConfigFile.deleteSync();
}
_cleanupFirebaseFiles(root, log);
FileService.removeVSCodeLaunchConfig();
_cleanupEmptyDir(p.join(root, 'lib/main'), log);
_cleanupEmptyDir(p.join(root, p.dirname(config.appConfigPath)), log);
_restoreTests(root, log);
log.info('🧹 Finalizing: flutter clean && flutter pub get...');
try {
Process.runSync('flutter', ['clean'], runInShell: true);
Process.runSync('flutter', ['pub', 'get'], runInShell: true);
} catch (e) {
log.warn('⚠️ Flutter cleanup issue: $e');
}
try {
IOSService.syncPods(logger: log);
} catch (e) {
log.warn('⚠️ CocoaPods sync issue: $e');
}
log.info('🎨 Formatting code...');
try {
Process.runSync('dart', ['format', 'lib'], runInShell: true);
} catch (_) {}
log.success('✅ Project reset complete. App is back to its original state.');
}