runable
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'settings_provider.dart';
|
||||
|
||||
part 'language_provider.g.dart';
|
||||
|
||||
/// Language/locale provider
|
||||
/// Extracts language from settings for easy access
|
||||
@riverpod
|
||||
String appLanguage(Ref ref) {
|
||||
final settingsAsync = ref.watch(settingsProvider);
|
||||
return settingsAsync.when(
|
||||
data: (settings) => settings.language,
|
||||
loading: () => 'en',
|
||||
error: (_, __) => 'en',
|
||||
);
|
||||
}
|
||||
|
||||
/// Supported languages provider
|
||||
@riverpod
|
||||
List<LanguageOption> supportedLanguages(Ref ref) {
|
||||
return const [
|
||||
LanguageOption(code: 'en', name: 'English', nativeName: 'English'),
|
||||
LanguageOption(code: 'es', name: 'Spanish', nativeName: 'Español'),
|
||||
LanguageOption(code: 'fr', name: 'French', nativeName: 'Français'),
|
||||
LanguageOption(code: 'de', name: 'German', nativeName: 'Deutsch'),
|
||||
LanguageOption(code: 'it', name: 'Italian', nativeName: 'Italiano'),
|
||||
LanguageOption(code: 'pt', name: 'Portuguese', nativeName: 'Português'),
|
||||
LanguageOption(code: 'zh', name: 'Chinese', nativeName: '中文'),
|
||||
LanguageOption(code: 'ja', name: 'Japanese', nativeName: '日本語'),
|
||||
LanguageOption(code: 'ko', name: 'Korean', nativeName: '한국어'),
|
||||
LanguageOption(code: 'ar', name: 'Arabic', nativeName: 'العربية'),
|
||||
];
|
||||
}
|
||||
|
||||
/// Language option model
|
||||
class LanguageOption {
|
||||
final String code;
|
||||
final String name;
|
||||
final String nativeName;
|
||||
|
||||
const LanguageOption({
|
||||
required this.code,
|
||||
required this.name,
|
||||
required this.nativeName,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user