class LanguageOption { const LanguageOption(this.code, this.name, this.flagCode); final String code; final String name; final String flagCode; } const kLanguages = [ LanguageOption('en', 'English', 'US'), LanguageOption('es', 'Spanish', 'ES'), LanguageOption('fr', 'French', 'FR'), LanguageOption('de', 'German', 'DE'), LanguageOption('it', 'Italian', 'IT'), LanguageOption('pt', 'Portuguese', 'BR'), LanguageOption('ja', 'Japanese', 'JP'), LanguageOption('ko', 'Korean', 'KR'), LanguageOption('zh', 'Mandarin', 'CN'), LanguageOption('yue', 'Cantonese', 'HK'), LanguageOption('ar', 'Arabic', 'SA'), LanguageOption('hi', 'Hindi', 'IN'), LanguageOption('kn', 'Kannada', 'IN'), LanguageOption('ml', 'Malayalam', 'IN'), LanguageOption('vi', 'Vietnamese', 'VN'), LanguageOption('ru', 'Russian', 'RU'), ]; const kLevels = ['A1', 'A2', 'B1', 'B2', 'C1']; const kLevelDescriptions = { 'A1': 'Just starting', 'A2': 'Everyday basics', 'B1': 'Conversations', 'B2': 'Most topics', 'C1': 'Advanced', }; String languageName(String code) => kLanguages.firstWhere((l) => l.code == code, orElse: () => LanguageOption(code, code, '')).name; String? languageFlagCode(String code) { final match = kLanguages.where((l) => l.code == code).toList(); return match.isEmpty ? null : match.first.flagCode; }