book appointment implementation contd.
							parent
							
								
									6f745f3666
								
							
						
					
					
						commit
						2aa84e0334
					
				| @ -0,0 +1,203 @@ | |||||||
|  | import 'package:easy_localization/easy_localization.dart'; | ||||||
|  | import 'package:flutter/material.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/core/app_assets.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/core/app_state.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/core/dependencies.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/core/utils/utils.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/authentication/authentication_view_model.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/presentation/lab/collapsing_list_view.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/theme/colors.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; | ||||||
|  | import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; | ||||||
|  | import 'package:provider/provider.dart'; | ||||||
|  | 
 | ||||||
|  | class ReviewAppointmentPage extends StatefulWidget { | ||||||
|  |   const ReviewAppointmentPage({super.key}); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   State<ReviewAppointmentPage> createState() => _ReviewAppointmentPageState(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class _ReviewAppointmentPageState extends State<ReviewAppointmentPage> { | ||||||
|  |   late AppState appState; | ||||||
|  |   late BookAppointmentsViewModel bookAppointmentsViewModel; | ||||||
|  |   late AuthenticationViewModel authVM; | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   Widget build(BuildContext context) { | ||||||
|  |     bookAppointmentsViewModel = Provider.of<BookAppointmentsViewModel>(context, listen: false); | ||||||
|  |     authVM = Provider.of<AuthenticationViewModel>(context, listen: false); | ||||||
|  |     appState = getIt.get<AppState>(); | ||||||
|  |     return Scaffold( | ||||||
|  |       backgroundColor: AppColors.scaffoldBgColor, | ||||||
|  |       body: Column( | ||||||
|  |         children: [ | ||||||
|  |           Expanded( | ||||||
|  |             child: CollapsingListView( | ||||||
|  |               title: LocaleKeys.reviewAppointment.tr(context: context), | ||||||
|  |               child: SingleChildScrollView( | ||||||
|  |                 padding: EdgeInsets.symmetric(horizontal: 24.h), | ||||||
|  |                 child: Column( | ||||||
|  |                   crossAxisAlignment: CrossAxisAlignment.start, | ||||||
|  |                   children: [ | ||||||
|  |                     SizedBox(height: 24.h), | ||||||
|  |                     LocaleKeys.docInfo.tr(context: context).toText16(isBold: true), | ||||||
|  |                     SizedBox(height: 16.h), | ||||||
|  |                     Container( | ||||||
|  |                       decoration: RoundedRectangleBorder().toSmoothCornerDecoration( | ||||||
|  |                         color: AppColors.whiteColor, | ||||||
|  |                         borderRadius: 24.h, | ||||||
|  |                         hasShadow: false, | ||||||
|  |                       ), | ||||||
|  |                       child: Padding( | ||||||
|  |                         padding: EdgeInsets.all(16.h), | ||||||
|  |                         child: Column( | ||||||
|  |                           crossAxisAlignment: CrossAxisAlignment.start, | ||||||
|  |                           children: [ | ||||||
|  |                             Row( | ||||||
|  |                               children: [ | ||||||
|  |                                 Image.network( | ||||||
|  |                                   bookAppointmentsViewModel.selectedDoctor.doctorImageURL!, | ||||||
|  |                                   width: 50.h, | ||||||
|  |                                   height: 50.h, | ||||||
|  |                                   fit: BoxFit.fill, | ||||||
|  |                                 ).circle(100), | ||||||
|  |                                 SizedBox(width: 8.h), | ||||||
|  |                                 Column( | ||||||
|  |                                   crossAxisAlignment: CrossAxisAlignment.start, | ||||||
|  |                                   children: [ | ||||||
|  |                                     Row( | ||||||
|  |                                       children: [ | ||||||
|  |                                         SizedBox( | ||||||
|  |                                           width: MediaQuery.of(context).size.width * 0.49, | ||||||
|  |                                           child: | ||||||
|  |                                               "${bookAppointmentsViewModel.selectedDoctor.doctorTitle} ${bookAppointmentsViewModel.selectedDoctor.name}".toString().toText16(isBold: true, maxlines: 1), | ||||||
|  |                                         ), | ||||||
|  |                                         Image.network( | ||||||
|  |                                           bookAppointmentsViewModel.selectedDoctor.nationalityFlagURL!, | ||||||
|  |                                           width: 20.h, | ||||||
|  |                                           height: 15.h, | ||||||
|  |                                           fit: BoxFit.fill, | ||||||
|  |                                         ), | ||||||
|  |                                       ], | ||||||
|  |                                     ), | ||||||
|  |                                     SizedBox(height: 2.h), | ||||||
|  |                                     (bookAppointmentsViewModel.selectedDoctor.speciality!.isNotEmpty ? bookAppointmentsViewModel.selectedDoctor.speciality!.first : "") | ||||||
|  |                                         .toString() | ||||||
|  |                                         .toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor, maxLine: 1), | ||||||
|  |                                   ], | ||||||
|  |                                 ), | ||||||
|  |                               ], | ||||||
|  |                             ), | ||||||
|  |                             SizedBox(height: 12.h), | ||||||
|  |                             Wrap( | ||||||
|  |                               direction: Axis.horizontal, | ||||||
|  |                               spacing: 8.h, | ||||||
|  |                               runSpacing: 8.h, | ||||||
|  |                               children: [ | ||||||
|  |                                 AppCustomChipWidget( | ||||||
|  |                                   labelText: "${LocaleKeys.clinic.tr(context: context)}: ${bookAppointmentsViewModel.selectedDoctor.clinicName}".needTranslation, | ||||||
|  |                                 ), | ||||||
|  |                                 AppCustomChipWidget( | ||||||
|  |                                   labelText: "${LocaleKeys.branch.tr(context: context)}: ${bookAppointmentsViewModel.selectedDoctor.projectName}".needTranslation, | ||||||
|  |                                 ), | ||||||
|  |                                 AppCustomChipWidget( | ||||||
|  |                                   labelText: "${LocaleKeys.date.tr(context: context)}: ${bookAppointmentsViewModel.selectedAppointmentDate}".needTranslation, | ||||||
|  |                                 ), | ||||||
|  |                                 AppCustomChipWidget( | ||||||
|  |                                   labelText: "${LocaleKeys.time.tr(context: context)}: ${bookAppointmentsViewModel.selectedAppointmentTime}".needTranslation, | ||||||
|  |                                 ), | ||||||
|  |                               ], | ||||||
|  |                             ), | ||||||
|  |                           ], | ||||||
|  |                         ), | ||||||
|  |                       ), | ||||||
|  |                     ), | ||||||
|  |                     SizedBox(height: 24.h), | ||||||
|  |                     LocaleKeys.patientInfo.tr(context: context).toText16(isBold: true), | ||||||
|  |                     SizedBox(height: 16.h), | ||||||
|  |                     Container( | ||||||
|  |                       decoration: RoundedRectangleBorder().toSmoothCornerDecoration( | ||||||
|  |                         color: AppColors.whiteColor, | ||||||
|  |                         borderRadius: 24.h, | ||||||
|  |                         hasShadow: false, | ||||||
|  |                       ), | ||||||
|  |                       child: Padding( | ||||||
|  |                         padding: EdgeInsets.all(16.h), | ||||||
|  |                         child: Row( | ||||||
|  |                           children: [ | ||||||
|  |                             Image.asset( | ||||||
|  |                               appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.male_img : AppAssets.femaleImg, | ||||||
|  |                               width: 52.h, | ||||||
|  |                               height: 52.h, | ||||||
|  |                             ), | ||||||
|  |                             SizedBox(width: 8.h), | ||||||
|  |                             Column( | ||||||
|  |                               children: [ | ||||||
|  |                                 "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText16(isBold: true), | ||||||
|  |                                 SizedBox(height: 8.h), | ||||||
|  |                                 AppCustomChipWidget(labelText: "${appState.getAuthenticatedUser()!.age} Years Old"), | ||||||
|  |                               ], | ||||||
|  |                             ), | ||||||
|  |                           ], | ||||||
|  |                         ), | ||||||
|  |                       ), | ||||||
|  |                     ), | ||||||
|  |                     SizedBox(height: 24.h), | ||||||
|  |                     "Hospital Information".needTranslation.toText16(isBold: true), | ||||||
|  |                     SizedBox(height: 16.h), | ||||||
|  |                     Container( | ||||||
|  |                       decoration: RoundedRectangleBorder().toSmoothCornerDecoration( | ||||||
|  |                         color: AppColors.whiteColor, | ||||||
|  |                         borderRadius: 12.h, | ||||||
|  |                         hasShadow: false, | ||||||
|  |                       ), | ||||||
|  |                       child: Padding( | ||||||
|  |                         padding: EdgeInsets.all(16.h), | ||||||
|  |                         child: Row( | ||||||
|  |                           children: [ | ||||||
|  |                             bookAppointmentsViewModel.selectedDoctor.projectName!.toText16(isBold: true), | ||||||
|  |                           ], | ||||||
|  |                         ), | ||||||
|  |                       ), | ||||||
|  |                     ), | ||||||
|  |                   ], | ||||||
|  |                 ), | ||||||
|  |               ), | ||||||
|  |             ), | ||||||
|  |           ), | ||||||
|  |           Container( | ||||||
|  |             decoration: RoundedRectangleBorder().toSmoothCornerDecoration( | ||||||
|  |               color: AppColors.whiteColor, | ||||||
|  |               borderRadius: 24.h, | ||||||
|  |               hasShadow: true, | ||||||
|  |             ), | ||||||
|  |             child: CustomButton( | ||||||
|  |               text: LocaleKeys.bookAppo.tr(context: context), | ||||||
|  |               onPressed: () async { | ||||||
|  |                 initiateBookAppointment(); | ||||||
|  |               }, | ||||||
|  |               backgroundColor: AppColors.primaryRedColor, | ||||||
|  |               borderColor: AppColors.primaryRedColor, | ||||||
|  |               textColor: AppColors.whiteColor, | ||||||
|  |               fontSize: 16, | ||||||
|  |               fontWeight: FontWeight.w500, | ||||||
|  |               borderRadius: 12, | ||||||
|  |               padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||||
|  |               height: 50.h, | ||||||
|  |             ).paddingSymmetrical(24.h, 24.h), | ||||||
|  |           ), | ||||||
|  |         ], | ||||||
|  |       ), | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void initiateBookAppointment() { | ||||||
|  | 
 | ||||||
|  |   } | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in New Issue
	
	 Haroon Amjad
						Haroon Amjad