getPackForSettings method Null safety
- EngineSettings settings
Get the pack for the current settings
Implementation
Future<SpeechPackage> getPackForSettings(EngineSettings settings) async {
late SpeechPackage defaultLangPackage;
late SpeechPackage? settingLangPackage;
// Search for pack for language and region
SpeechPackage packForLanguageAndRegion = packages.firstWhere(
(SpeechPackage pack) {
String settingLanguage =
settings.language.toLowerCase().replaceFirst('_', '-');
String defaultLanguage = EngineConfig.defaultLanguage;
String packLanguage = pack.lang.toLowerCase();
String settingRegion = settings.region.toLowerCase();
// set the generic package for the current language
if (settingLanguage == packLanguage) {
settingLangPackage = pack;
// if no region in settings: match found
if (settingRegion.isEmpty) {
return true;
}
}
// set the default language package
if (defaultLanguage == packLanguage) {
defaultLangPackage = pack;
}
return '$settingLanguage-$settingRegion' == packLanguage;
},
// Fallback to package for the setting or default language
orElse: () => settingLangPackage ?? defaultLangPackage,
);
// Has this package been updated
final isUpdated = _storageCtrl.isUpdated(packForLanguageAndRegion);
final status = await SpeechPackStatusStorage.instance
.load(packForLanguageAndRegion.id) ??
SpeechPackageStatus(id: packForLanguageAndRegion.id);
activePackageStatus = status.copyWith(isUpdated: isUpdated);
return packForLanguageAndRegion;
}