import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/mine/mineMultiLanguage/mineMultiLanguage_state.dart'; import 'package:star_lock/tools/store_service.dart'; import 'package:star_lock/translations/current_locale_tool.dart'; import '../../app_settings/app_colors.dart'; import '../../app_settings/app_settings.dart'; import '../../tools/commonItem.dart'; import '../../tools/titleAppBar.dart'; import '../../translations/app_dept.dart'; import 'mineMultiLanguage_logic.dart'; class MineMultiLanguagePage extends StatefulWidget { const MineMultiLanguagePage({Key? key}) : super(key: key); @override State createState() => _MineMultiLanguagePageState(); } class _MineMultiLanguagePageState extends State { final MineMultiLanguageLogic logic = Get.put(MineMultiLanguageLogic()); final MineMultiLanguageState state = Get.find().state; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( barTitle: '多语言'.tr, haveBack: true, backgroundColor: AppColors.mainColor, actionsList: [ TextButton( onPressed: () async { await logic.updateUserLangInfo(state.seletLocale).then((value) { final String currentLanguage = StoreService.to.getLanguageCode()!; final String lanTypeTitle = ExtensionLanguageType.fromLocale(state.seletLocale) .lanTitle; Get.back(result: {'currentLanguage': currentLanguage}); }).catchError((e) { AppLog.log('updateUserLangInfo error:$e'); EasyLoading.showToast('网络访问失败,请检查网络是否正常'.tr); }); }, child: Text( '保存'.tr, style: TextStyle( color: Colors.white, fontSize: 22.sp, ), ), ), ], ), body: Obx(() => ListView( // mainAxisAlignment: MainAxisAlignment.start, // mainAxisSize: MainAxisSize.min, children: _children(), ))); } List _children() { final List l = []; l.add( CommonItem( leftTitel: '跟随系统'.tr, rightTitle: '', isHaveLine: true, isHaveDirection: false, isHaveRightWidget: true, rightWidget: state.currentLanguageType.value == LanguageType.system ? Image( image: const AssetImage('images/icon_item_checked.png'), width: 30.w, height: 30.w, fit: BoxFit.contain, ) : Container(), action: () { state.seletLocale = CurrentLocaleTool.convertLocale(Get.deviceLocale!); state.currentLanguageType.value = LanguageType.system; }), ); for (int i = 0; i < state.languages.length; i++) { final Locale e = state.languages[i]; final LanguageType lanType = ExtensionLanguageType.fromLocale(e); // AppLog.log('e:$e lanType:$lanType state.currentLanguageType.value:${state.currentLanguageType.value} Get.locale!.languageCode:${Get.locale!.languageCode} Get.locale!.countryCode:${Get.locale!.countryCode}'); if (state.currentLanguageType.value == lanType) { state.seletLocale = e; AppLog.log( 'e:$e lanType:$lanType state.currentLanguageType.value:${state.currentLanguageType.value} Get.locale!.languageCode:${Get.locale!.languageCode} Get.locale!.countryCode:${Get.locale!.countryCode}'); } l.add( CommonItem( leftTitel: lanType.lanTitle, rightTitle: '', isHaveLine: true, isHaveDirection: false, isHaveRightWidget: true, leftTitleMaxWidth: 0.9.sw, // 设置左侧标题最大宽度 rightWidget: state.currentLanguageType.value == lanType ? Image( image: const AssetImage('images/icon_item_checked.png'), width: 30.w, height: 30.w, fit: BoxFit.contain, ) : Container(), action: () { // logic.updateUserLangInfo(e); state.seletLocale = e; state.currentLanguageType.value = ExtensionLanguageType.fromLocale(state.seletLocale); }), ); } return l; } }