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 { 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( 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( 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( 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( 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(), ); // 未选中时灰色边框 }), ), ], ), ], ), ), ], ); } }