projectInfoStep function
Collects project name and org identifier.
Implementation
Future<(String name, String org)> projectInfoStep() async {
print('');
print('┌─────────────────────────────────────────┐');
print('│ FlutterBlueprint — New App │');
print('└─────────────────────────────────────────┘');
print('');
final name = Input(
prompt: 'App name',
validator: (value) {
if (value.trim().isEmpty) throw ValidationError('App name cannot be empty');
if (!RegExp(r'^[a-zA-Z][a-zA-Z0-9_\- ]*$').hasMatch(value.trim())) {
throw ValidationError('Name must start with a letter and contain only letters, numbers, underscores, hyphens, or spaces');
}
return true;
},
).interact();
final org = Input(
prompt: 'Organization (reverse domain, e.g. com.example)',
defaultValue: 'com.example',
validator: (value) {
if (!RegExp(r'^[a-z][a-z0-9]*(\.[a-z][a-z0-9]*)+$').hasMatch(value.trim())) {
throw ValidationError('Org must be a valid reverse domain (e.g. com.example)');
}
return true;
},
).interact();
return (name.trim(), org.trim());
}