116 lines
4.1 KiB
Dart
Executable File
116 lines
4.1 KiB
Dart
Executable File
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 '../../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<MineMultiLanguagePage> createState() => _MineMultiLanguagePageState();
|
|
}
|
|
|
|
class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
|
|
final MineMultiLanguageLogic logic = Get.put(MineMultiLanguageLogic());
|
|
final MineMultiLanguageState state = Get.find<MineMultiLanguageLogic>().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<Widget> _children() {
|
|
final List<Widget> l = <Widget>[];
|
|
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;
|
|
}
|
|
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;
|
|
}
|
|
}
|