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 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, }); }