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/features/emergency_services/emergency_services_view_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_livecare_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.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'; import 'package:provider/provider.dart'; class AppLanguageChange extends StatefulWidget { AppLanguageChange({Key? key}) : super(key: key); @override _AppLanguageChangeState createState() { return _AppLanguageChangeState(); } } class _AppLanguageChangeState extends State { String? selectedValue; late MyAppointmentsViewModel myAppointmentsViewModel; late ImmediateLiveCareViewModel immediateLiveCareViewModel; late EmergencyServicesViewModel emergencyServicesViewModel; late TodoSectionViewModel todoSectionViewModel; @override void initState() { super.initState(); } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { selectedValue ??= context.locale.languageCode; myAppointmentsViewModel = Provider.of(context, listen: false); immediateLiveCareViewModel = Provider.of(context, listen: false); emergencyServicesViewModel = Provider.of(context, listen: false); todoSectionViewModel = Provider.of(context, listen: false); 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", "en"), 1.divider, languageItem("العربية", "ar"), ], ), ), CustomButton( text: LocaleKeys.save.tr(context: context), onPressed: () { context.setLocale(selectedValue == 'en' ? Locale('en', 'US') : Locale('ar', 'SA')).then((val) { //Reload My Appointments Data myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); //Reload Immediate LiveCare Data immediateLiveCareViewModel.initImmediateLiveCare(); immediateLiveCareViewModel.getPatientLiveCareHistory(); //Reload Emergency Services Data emergencyServicesViewModel.checkPatientERAdvanceBalance(); 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; }); }), ); } }