language switch added in drawer, and ui improvements
							parent
							
								
									f04f3bcd9c
								
							
						
					
					
						commit
						57827549b8
					
				| @ -0,0 +1,87 @@ | ||||
| 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; | ||||
|         }); | ||||
|       }), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue