promptForModules static method
Prompts the user to select utility modules to include in the project.
Available modules include:
- Camera: Photo/video capture service
- Speech: Speech-to-text and text-to-speech
- Recorder: Audio recording and playback
- Call: Phone call and VoIP service
- Contacts: Access to device contacts
Returns a list of selected module identifiers.
Implementation
static Future<List<String>> promptForModules(Logger logger) async {
final modules = <String>[];
logger.info('π± Utility Module Selection');
logger.info('Select which utility modules to include:');
final availableModules = {
'camera': {
'name': 'πΈ Camera Module',
'description': 'Camera service for capturing photos/videos',
'dependencies': ['camera', 'image_picker'],
},
'speech': {
'name': 'π€ Speech Module',
'description': 'Speech-to-text and Text-to-speech services',
'dependencies': ['speech_to_text', 'flutter_tts'],
},
'recorder': {
'name': 'ποΈ Audio Recorder Module',
'description': 'Audio recording and playback service',
'dependencies': ['record', 'path_provider'],
},
'call': {
'name': 'π Call Module',
'description': 'Phone call and VoIP service',
'dependencies': ['url_launcher', 'permission_handler'],
},
'location': {
'name': 'π Location Module',
'description': 'GPS location tracking and geolocation services',
'dependencies': ['geolocator', 'permission_handler'],
},
};
for (final entry in availableModules.entries) {
final moduleKey = entry.key;
final moduleInfo = entry.value;
logger.info('');
logger.info('${moduleInfo['name']}');
logger.info(' ${moduleInfo['description']}');
logger.info(
' Dependencies: ${(moduleInfo['dependencies'] as List<String>).join(', ')}');
final include = logger.confirm(
'Include ${moduleInfo['name']}?',
defaultValue: false,
);
if (include) {
modules.add(moduleKey);
logger.success('β Added ${moduleInfo['name']}');
} else {
logger.detail('β Skipped ${moduleInfo['name']}');
}
}
logger.info('');
if (modules.isEmpty) {
logger.info('β οΈ No utility modules selected');
} else {
logger.success('Selected modules: ${modules.join(', ')}');
}
return modules;
}