You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Dart
		
	
| import 'package:easy_localization/easy_localization.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
 | |
| import 'package:hmg_patient_app_new/extensions/int_extensions.dart';
 | |
| import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
 | |
| import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
 | |
| import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
 | |
| import 'package:hmg_patient_app_new/theme/colors.dart';
 | |
| import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
 | |
| 
 | |
| class AppLanguageChange extends StatefulWidget {
 | |
|   AppLanguageChange({Key? key}) : super(key: key);
 | |
| 
 | |
|   @override
 | |
|   _AppLanguageChangeState createState() {
 | |
|     return _AppLanguageChangeState();
 | |
|   }
 | |
| }
 | |
| 
 | |
| class _AppLanguageChangeState extends State<AppLanguageChange> {
 | |
|   String? selectedValue;
 | |
| 
 | |
|   @override
 | |
|   void initState() {
 | |
|     super.initState();
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   void dispose() {
 | |
|     super.dispose();
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     selectedValue ??= context.locale.languageCode;
 | |
|     return Column(
 | |
|       spacing: 24.h,
 | |
|       children: [
 | |
|         Container(
 | |
|           padding: EdgeInsets.only(top: 4, bottom: 4),
 | |
|           decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true),
 | |
|           child: Column(
 | |
|             children: [
 | |
|               languageItem("English".needTranslation, "en"),
 | |
|               1.divider,
 | |
|               languageItem("العربية".needTranslation, "ar"),
 | |
|             ],
 | |
|           ),
 | |
|         ),
 | |
|         CustomButton(
 | |
|             text: LocaleKeys.save.tr(),
 | |
|             onPressed: () {
 | |
|               context.setLocale(selectedValue == 'en' ? Locale('en', 'US') : Locale('ar', 'SA')).then((val) {
 | |
|                 Navigator.pop(context);
 | |
|               });
 | |
|             }),
 | |
|       ],
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   Widget languageItem(String title, String _value) {
 | |
|     return SizedBox(
 | |
|       height: 72,
 | |
|       child: Row(
 | |
|         spacing: 8.h,
 | |
|         children: [
 | |
|           Radio(
 | |
|             value: _value,
 | |
|             groupValue: selectedValue,
 | |
|             activeColor: AppColors.errorColor,
 | |
|             onChanged: (value) {
 | |
|               setState(() {
 | |
|                 selectedValue = _value;
 | |
|               });
 | |
|             },
 | |
|             materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
 | |
|           ),
 | |
|           title.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded,
 | |
|         ],
 | |
|       ).paddingOnly(left: 16, right: 16).onPress(() {
 | |
|         setState(() {
 | |
|           selectedValue = _value;
 | |
|         });
 | |
|       }),
 | |
|     );
 | |
|   }
 | |
| }
 |