language_controller.dart 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import 'package:get/get.dart';
  2. class LanguageInfo {
  3. final String code;
  4. final String name;
  5. final String nativeName;
  6. LanguageInfo({
  7. required this.code,
  8. required this.name,
  9. required this.nativeName,
  10. });
  11. }
  12. class LanguageController extends GetxController {
  13. // 当前选中的语言,默认为英语
  14. final selectedLanguage = 'en'.obs;
  15. // 支持的语言列表
  16. final List<LanguageInfo> languages = [
  17. LanguageInfo(code: 'en', name: 'English', nativeName: '英语'),
  18. LanguageInfo(
  19. code: 'zh',
  20. name: 'Chinese (Simplified)',
  21. nativeName: '中文 (简体)',
  22. ),
  23. LanguageInfo(code: 'es', name: 'Español', nativeName: '西班牙语'),
  24. LanguageInfo(code: 'fr', name: 'Français', nativeName: '法语'),
  25. LanguageInfo(code: 'de', name: 'Deutsch', nativeName: '德语'),
  26. LanguageInfo(code: 'ja', name: '日本語', nativeName: '日语'),
  27. LanguageInfo(code: 'ko', name: '한국어', nativeName: '韩语'),
  28. ];
  29. @override
  30. void onInit() {
  31. super.onInit();
  32. }
  33. @override
  34. void onReady() {
  35. super.onReady();
  36. }
  37. @override
  38. void onClose() {
  39. super.onClose();
  40. }
  41. /// 选择语言
  42. void selectLanguage(String languageCode) {
  43. selectedLanguage.value = languageCode;
  44. }
  45. /// 获取当前选中的语言信息
  46. LanguageInfo? get currentLanguage {
  47. try {
  48. return languages.firstWhere(
  49. (lang) => lang.code == selectedLanguage.value,
  50. );
  51. } catch (e) {
  52. return languages.first; // 默认返回第一个
  53. }
  54. }
  55. }