app-starlock/lib/mine/mineMultiLanguage/mineMultiLanguage_page.dart

126 lines
4.7 KiB
Dart
Raw Normal View History

2023-07-10 17:50:31 +08:00
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
2023-07-10 17:50:31 +08:00
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
2024-07-31 20:02:38 +08:00
import 'package:star_lock/mine/mineMultiLanguage/mineMultiLanguage_state.dart';
import 'package:star_lock/tools/store_service.dart';
2024-12-19 14:30:08 +08:00
import 'package:star_lock/translations/current_locale_tool.dart';
2023-07-10 17:50:31 +08:00
import '../../app_settings/app_colors.dart';
import '../../app_settings/app_settings.dart';
2023-07-10 17:50:31 +08:00
import '../../tools/commonItem.dart';
import '../../tools/titleAppBar.dart';
import '../../translations/app_dept.dart';
import 'mineMultiLanguage_logic.dart';
class MineMultiLanguagePage extends StatefulWidget {
2023-07-15 15:11:28 +08:00
const MineMultiLanguagePage({Key? key}) : super(key: key);
2023-07-10 17:50:31 +08:00
@override
State<MineMultiLanguagePage> createState() => _MineMultiLanguagePageState();
}
class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
2024-07-31 20:02:38 +08:00
final MineMultiLanguageLogic logic = Get.put(MineMultiLanguageLogic());
final MineMultiLanguageState state = Get.find<MineMultiLanguageLogic>().state;
2023-07-10 17:50:31 +08:00
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
2024-12-19 14:30:08 +08:00
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);
});
2024-12-19 14:30:08 +08:00
},
child: Text(
'保存'.tr,
style: TextStyle(
color: Colors.white,
fontSize: 22.sp,
),
),
),
],
),
body: Obx(() => ListView(
// mainAxisAlignment: MainAxisAlignment.start,
// mainAxisSize: MainAxisSize.min,
children: _children(),
)));
2023-07-10 17:50:31 +08:00
}
List<Widget> _children() {
final List<Widget> l = <Widget>[];
2024-12-19 14:30:08 +08:00
l.add(
CommonItem(
leftTitel: '跟随系统'.tr,
2024-12-19 14:30:08 +08:00
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}');
2024-12-19 14:30:08 +08:00
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}');
2024-12-19 14:30:08 +08:00
}
l.add(
CommonItem(
leftTitel: lanType.lanTitle,
2024-07-31 20:02:38 +08:00
rightTitle: '',
isHaveLine: true,
isHaveDirection: false,
isHaveRightWidget: true,
2024-12-19 14:30:08 +08:00
rightWidget: state.currentLanguageType.value == lanType
? Image(
2024-07-31 20:02:38 +08:00
image: const AssetImage('images/icon_item_checked.png'),
width: 30.w,
height: 30.w,
fit: BoxFit.contain,
)
2024-12-19 14:30:08 +08:00
: Container(),
action: () {
2024-12-19 14:30:08 +08:00
// logic.updateUserLangInfo(e);
state.seletLocale = e;
state.currentLanguageType.value =
ExtensionLanguageType.fromLocale(state.seletLocale);
}),
);
2023-07-10 17:50:31 +08:00
}
return l;
}
}