2026-07-01 18:25:58 +08:00

247 lines
11 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:aslan/app_localizations.dart';
import 'package:provider/provider.dart';
import 'package:aslan/chatvibe_ui/components/appbar/chatvibe_appbar.dart';
import 'package:aslan/chatvibe_ui/components/text/at_text.dart';
import 'package:aslan/chatvibe_ui/theme/chatvibe_theme.dart';
import 'package:aslan/chatvibe_data/sources/local/data_persistence.dart';
import 'package:aslan/chatvibe_managers/localization_manager.dart';
import 'package:aslan/chatvibe_core/constants/at_global_config.dart';
///语言选择
class LanguagePage extends StatefulWidget {
@override
_LanguagePageState createState() => _LanguagePageState();
}
class _LanguagePageState extends State<LanguagePage> {
int selectType = 1;
@override
void initState() {
super.initState();
String langCode = DataPersistence.getLang();
if (langCode == "ar") {
selectType = 1;
}else if(langCode == "tr"){
selectType = 2;
}else if(langCode == "bn"){
selectType = 3;
} else {
selectType = 0;
}
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
Image.asset(
ATGlobalConfig.businessLogicStrategy.getLanguagePageBackgroundImage(),
width: ScreenUtil().screenWidth,
height: ScreenUtil().screenHeight,
fit: BoxFit.fill,
),
Scaffold(
backgroundColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageScaffoldBackgroundColor(),
resizeToAvoidBottomInset: false,
appBar: ChatVibeStandardAppBar(
title: ATAppLocalizations.of(context)!.language,
actions: [],
),
body: Column(
children: [
Row(
children: [
SizedBox(width: 15.w),
Expanded(
child: text(
"English",
textColor: ATGlobalConfig.businessLogicStrategy.getLanguagePagePrimaryTextColor(),
fontSize: 15.sp,
),
),
Checkbox(
value: selectType == 0,
checkColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckColor(),
activeColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxActiveColor(),
onChanged: (b) {
if (selectType == 0) {
selectType = 1;
} else {
selectType = 0;
}
setState(() {});
if (b!) {
Provider.of<LocalizationManager>(
context,
listen: false,
).setLocale(const Locale('en', ''));
}
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderRadius()),
),
side: WidgetStateBorderSide.resolveWith((states) {
if (states.contains(WidgetState.selected)) {
return BorderSide(
color: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderColor(),
width: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderWidth(),
); // 选中时保留蓝色边框
}
return BorderSide(
color: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderColor(),
width: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderWidth(),
); // 未选中时灰色边框
}),
),
],
),
Row(
children: [
SizedBox(width: 15.w),
Expanded(
child: text(
"العربية",
textColor: ATGlobalConfig.businessLogicStrategy.getLanguagePagePrimaryTextColor(),
fontSize: 15.sp,
),
),
Checkbox(
value: selectType == 1,
checkColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckColor(),
activeColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxActiveColor(),
onChanged: (b) {
if (selectType == 1) {
selectType = 0;
} else {
selectType = 1;
}
setState(() {});
if (b!) {
Provider.of<LocalizationManager>(
context,
listen: false,
).setLocale(const Locale('ar', ''));
}
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderRadius()),
),
side: WidgetStateBorderSide.resolveWith((states) {
if (states.contains(WidgetState.selected)) {
return BorderSide(
color: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderColor(),
width: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderWidth(),
); // 选中时保留蓝色边框
}
return BorderSide(
color: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderColor(),
width: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderWidth(),
); // 未选中时灰色边框
}),
),
],
),
Row(
children: [
SizedBox(width: 15.w),
Expanded(
child: text(
"Türkçe",
textColor: ATGlobalConfig.businessLogicStrategy.getLanguagePagePrimaryTextColor(),
fontSize: 15.sp,
),
),
Checkbox(
value: selectType == 2,
checkColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckColor(),
activeColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxActiveColor(),
onChanged: (b) {
if (selectType == 2) {
selectType = 0;
} else {
selectType = 2;
}
setState(() {});
if (b!) {
Provider.of<LocalizationManager>(
context,
listen: false,
).setLocale(const Locale('tr', ''));
}
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderRadius()),
),
side: WidgetStateBorderSide.resolveWith((states) {
if (states.contains(WidgetState.selected)) {
return BorderSide(
color: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderColor(),
width: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderWidth(),
); // 选中时保留蓝色边框
}
return BorderSide(
color: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderColor(),
width: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderWidth(),
); // 未选中时灰色边框
}),
),
],
), Row(
children: [
SizedBox(width: 15.w),
Expanded(
child: text(
"বাংলা",
textColor: ATGlobalConfig.businessLogicStrategy.getLanguagePagePrimaryTextColor(),
fontSize: 15.sp,
),
),
Checkbox(
value: selectType == 3,
checkColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckColor(),
activeColor: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxActiveColor(),
onChanged: (b) {
if (selectType == 3) {
selectType = 0;
} else {
selectType = 3;
}
setState(() {});
if (b!) {
Provider.of<LocalizationManager>(
context,
listen: false,
).setLocale(const Locale('bn', ''));
}
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderRadius()),
),
side: WidgetStateBorderSide.resolveWith((states) {
if (states.contains(WidgetState.selected)) {
return BorderSide(
color: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderColor(),
width: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderWidth(),
); // 选中时保留蓝色边框
}
return BorderSide(
color: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderColor(),
width: ATGlobalConfig.businessLogicStrategy.getLanguagePageCheckboxBorderWidth(),
); // 未选中时灰色边框
}),
),
],
),
],
),
),
],
);
}
}