import 'package:flutter/material.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/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); final String lanTypeTitle = ExtensionLanguageType.fromLocale(state.seletLocale) .lanTitle; Get.back( result: {'currentLanguage': state.seletLocale.toString()}); }, 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, 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; } }