initialize method
Initialize speech recognition This will automatically request microphone permission if not granted
Implementation
Future<bool> initialize() async {
if (_isInitialized) return _isAvailable;
try {
// Check and request microphone permission
_permissionStatus = await Permission.microphone.status;
if (!_permissionStatus.isGranted) {
_permissionStatus = await Permission.microphone.request();
notifyListeners();
if (!_permissionStatus.isGranted) {
_isInitialized = true;
_isAvailable = false;
if (_permissionStatus.isPermanentlyDenied) {
onError?.call('Microphone permission permanently denied. Please enable it in settings.');
} else {
onError?.call('Microphone permission denied.');
}
notifyListeners();
return false;
}
}
_isAvailable = await _speech.initialize(
onError: _handleError,
onStatus: _handleStatus,
debugLogging: kDebugMode,
);
if (_isAvailable) {
_availableLocales = await _speech.locales();
// Set current locale
if (localeId != null) {
_currentLocale = localeId!;
} else {
final systemLocale = await _speech.systemLocale();
_currentLocale = systemLocale?.localeId ?? 'en_US';
}
}
_isInitialized = true;
notifyListeners();
return _isAvailable;
} catch (e) {
_isInitialized = false;
_isAvailable = false;
onError?.call('Failed to initialize speech recognition: $e');
notifyListeners();
return false;
}
}