@ -1,4 +1,6 @@
import ' dart:async ' ;
import ' dart:ui ' as ui ;
import ' package:easy_localization/easy_localization.dart ' ;
import ' package:flutter/material.dart ' ;
import ' package:hmg_patient_app_new/core/app_assets.dart ' ;
@ -18,10 +20,8 @@ import 'package:hmg_patient_app_new/presentation/appointments/appointment_paymen
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:hmg_patient_app_new/widgets/routes/custom_page_route.dart ' ;
import ' package:hmg_patient_app_new/widgets/common_bottom_sheet.dart ' ;
import ' dart:ui ' as ui ;
import ' package:hmg_patient_app_new/widgets/routes/custom_page_route.dart ' ;
class MedicalFileAppointmentCard extends StatefulWidget {
final PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel ;
@ -138,169 +138,193 @@ class _MedicalFileAppointmentCardState extends State<MedicalFileAppointmentCard>
richText: Directionality (
textDirection: ui . TextDirection . ltr ,
child: DateUtil . formatDateToDate ( DateUtil . convertStringToDate ( widget . patientAppointmentHistoryResponseModel . appointmentDate ) , false )
. toText12 ( color: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) ? AppColors . textColor : AppColors . primaryRedColor , isBold: true , isEnglishOnly: true )
. toText12 (
color: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) ? AppColors . textColor : AppColors . primaryRedColor ,
isBold: true ,
isEnglishOnly: true )
. paddingSymmetrical ( 8. w , 0 ) ,
) ,
icon: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) ? AppAssets . appointment_calendar_icon : AppAssets . alarm_clock_icon ,
icon: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel )
? AppAssets . appointment_calendar_icon
: AppAssets . alarm_clock_icon ,
iconColor: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) ? AppColors . textColor : AppColors . primaryRedColor ,
iconSize: 16. w ,
backgroundColor: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) ? AppColors . greyColor : AppColors . secondaryLightRedColor ,
backgroundColor:
AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) ? AppColors . greyColor : AppColors . secondaryLightRedColor ,
textColor: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) ? AppColors . textColor : AppColors . primaryRedColor ,
padding: EdgeInsets . only ( top: 12. h , bottom: 12. h , left: 8. w , right: 8. w ) ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
SizedBox ( height: 16. h ) ,
Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration ( color: AppColors . whiteColor , borderRadius: 24. r , hasShadow: false ) ,
width: 200. w ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Row (
children: [
Image . network (
widget . patientAppointmentHistoryResponseModel . doctorImageURL ? ? " https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png " ,
width: 25. w ,
height: 27. h ,
fit: BoxFit . fill ,
) . circle ( 100 ) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
SizedBox ( width: 8. w ) ,
Expanded (
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
( widget . patientAppointmentHistoryResponseModel . doctorNameObj ? ? " " ) . toText14 ( isBold: true , maxlines: 1 , isEnglishOnly: ! Utils . isArabicText ( widget . patientAppointmentHistoryResponseModel . doctorNameObj ? ? " " ) ) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
( widget . patientAppointmentHistoryResponseModel . clinicName ? ? " " )
. toText12 ( maxLine: 1 , isBold: true , color: AppColors . greyTextColor )
. toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
] ,
IntrinsicWidth (
child: Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration ( color: AppColors . whiteColor , borderRadius: 24. r , hasShadow: false ) ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Row (
children: [
Image . network (
widget . patientAppointmentHistoryResponseModel . doctorImageURL ? ?
" https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png " ,
width: 25. w ,
height: 27. h ,
fit: BoxFit . fill ,
) . circle ( 100 ) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
SizedBox ( width: 8. w ) ,
Expanded (
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
( widget . patientAppointmentHistoryResponseModel . doctorNameObj ? ? " " )
. toText14 (
isBold: true ,
maxlines: 1 ,
isEnglishOnly: ! Utils . isArabicText ( widget . patientAppointmentHistoryResponseModel . doctorNameObj ? ? " " ) )
. toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
( widget . patientAppointmentHistoryResponseModel . clinicName ? ? " " )
. toText12 ( maxLine: 1 , textOverflow: TextOverflow . ellipsis , isBold: true , color: AppColors . greyTextColor )
. toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
] ,
) ,
) ,
) ,
] ,
) ,
SizedBox ( height: 12. h ) ,
/ / Check if doctor is active - if not , show only View Details button
( widget . patientAppointmentHistoryResponseModel . isActiveDoctor ? ? true )
? / / Doctor is active - check rebooking logic
( AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) & &
widget . patientAppointmentHistoryResponseModel . isClinicReBookingAllowed = = false )
? / / Show only the button without arrow when rebooking not allowed
widget . myAppointmentsViewModel . isMyAppointmentsLoading
? Container ( ) . toShimmer2 ( isShow: true , height: 40. h , width: 100. w , radius: 12. r )
: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel )
? getArrivedAppointmentButton ( context ) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading )
: CustomButton (
text: AppointmentType . getNextActionText ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
onPressed: ( ) {
handleAppointmentNextAction ( widget . patientAppointmentHistoryResponseModel . nextAction , context ) ;
} ,
backgroundColor: AppointmentType . getNextActionButtonColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) . withValues ( alpha: 0.15 ) ,
borderColor: AppointmentType . getNextActionButtonColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) . withValues ( alpha: 0.01 ) ,
textColor: AppointmentType . getNextActionTextColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
fontSize: 14. f ,
fontWeight: FontWeight . w600 ,
borderRadius: 12. r ,
padding: EdgeInsets . symmetric ( horizontal: 10. w ) ,
height: 40. h ,
icon: AppointmentType . getNextActionIcon ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
iconColor: AppointmentType . getNextActionTextColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
iconSize: 14. h ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading )
: / / Normal flow - show button with arrow
Row (
children: [
widget . myAppointmentsViewModel . isMyAppointmentsLoading
? Container ( ) . toShimmer2 ( isShow: true , height: 40. h , width: 100. w , radius: 12. r )
: Expanded (
flex: 7 ,
child: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel )
? getArrivedAppointmentButton ( context ) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading )
: CustomButton (
text: AppointmentType . getNextActionText ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
onPressed: ( ) {
handleAppointmentNextAction ( widget . patientAppointmentHistoryResponseModel . nextAction , context ) ;
} ,
backgroundColor: AppointmentType . getNextActionButtonColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) . withValues ( alpha: 0.15 ) ,
borderColor: AppointmentType . getNextActionButtonColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) . withValues ( alpha: 0.01 ) ,
textColor: AppointmentType . getNextActionTextColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
fontSize: 14. f ,
fontWeight: FontWeight . w600 ,
borderRadius: 12. r ,
padding: EdgeInsets . symmetric ( horizontal: 10. w ) ,
height: 40. h ,
icon: AppointmentType . getNextActionIcon ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
iconColor: AppointmentType . getNextActionTextColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
iconSize: 14. h ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
) ,
SizedBox ( width: 8. w ) ,
( ( ( ( widget . patientAppointmentHistoryResponseModel . isLiveCareAppointment ? ? false ) | |
( widget . patientAppointmentHistoryResponseModel . isExecludeDoctor ? ? false ) | |
! Utils . isClinicAllowedForRebook ( widget . patientAppointmentHistoryResponseModel . clinicID ? ? 0 ) ) ) & &
AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) )
? SizedBox . shrink ( )
: Expanded (
flex: 2 ,
child: Container (
height: 40. h ,
width: 40. w ,
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . textColor ,
borderRadius: 10. r ,
) ,
child: Padding (
padding: EdgeInsets . all ( 10. w ) ,
child: Transform . flip (
flipX: appState . isArabic ( ) ,
child: Utils . buildSvgWithAssets (
iconColor: AppColors . whiteColor ,
icon: AppAssets . forward_arrow_icon_small ,
width: 40. w ,
height: 40. h ,
fit: BoxFit . contain ,
) ,
] ,
) ,
SizedBox ( height: 8. h ) ,
/ / Check if doctor is active - if not , show only View Details button
( widget . patientAppointmentHistoryResponseModel . isActiveDoctor ? ? true )
? / / Doctor is active - check rebooking logic
( AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) & &
widget . patientAppointmentHistoryResponseModel . isClinicReBookingAllowed = = false )
? / / Show only the button without arrow when rebooking not allowed
widget . myAppointmentsViewModel . isMyAppointmentsLoading
? Container ( ) . toShimmer2 ( isShow: true , height: 40. h , width: 100. w , radius: 12. r )
: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel )
? getArrivedAppointmentButton ( context ) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading )
: CustomButton (
text: AppointmentType . getNextActionText ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
onPressed: ( ) {
handleAppointmentNextAction ( widget . patientAppointmentHistoryResponseModel . nextAction , context ) ;
} ,
backgroundColor:
AppointmentType . getNextActionButtonColor ( widget . patientAppointmentHistoryResponseModel . nextAction )
. withValues ( alpha: 0.15 ) ,
borderColor: AppointmentType . getNextActionButtonColor ( widget . patientAppointmentHistoryResponseModel . nextAction )
. withValues ( alpha: 0.01 ) ,
textColor: AppointmentType . getNextActionTextColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
fontSize: 14. f ,
fontWeight: FontWeight . w600 ,
borderRadius: 12. r ,
padding: EdgeInsets . symmetric ( horizontal: 10. w ) ,
height: 40. h ,
icon: AppointmentType . getNextActionIcon ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
iconColor: AppointmentType . getNextActionTextColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
iconSize: 14. h ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading )
: / / Normal flow - show button with arrow
Row (
children: [
widget . myAppointmentsViewModel . isMyAppointmentsLoading
? Container ( ) . toShimmer2 ( isShow: true , height: 40. h , width: 100. w , radius: 12. r )
: Expanded (
flex: 7 ,
child: AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel )
? getArrivedAppointmentButton ( context )
. toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading )
: CustomButton (
text: AppointmentType . getNextActionText ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
onPressed: ( ) {
handleAppointmentNextAction ( widget . patientAppointmentHistoryResponseModel . nextAction , context ) ;
} ,
backgroundColor:
AppointmentType . getNextActionButtonColor ( widget . patientAppointmentHistoryResponseModel . nextAction )
. withValues ( alpha: 0.15 ) ,
borderColor:
AppointmentType . getNextActionButtonColor ( widget . patientAppointmentHistoryResponseModel . nextAction )
. withValues ( alpha: 0.01 ) ,
textColor:
AppointmentType . getNextActionTextColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
fontSize: 14. f ,
fontWeight: FontWeight . w600 ,
borderRadius: 12. r ,
padding: EdgeInsets . symmetric ( horizontal: 10. w ) ,
height: 40. h ,
icon: AppointmentType . getNextActionIcon ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
iconColor:
AppointmentType . getNextActionTextColor ( widget . patientAppointmentHistoryResponseModel . nextAction ) ,
iconSize: 14. h ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
) ,
SizedBox ( width: 8. w ) ,
( ( ( ( widget . patientAppointmentHistoryResponseModel . isLiveCareAppointment ? ? false ) | |
( widget . patientAppointmentHistoryResponseModel . isExecludeDoctor ? ? false ) | |
! Utils . isClinicAllowedForRebook ( widget . patientAppointmentHistoryResponseModel . clinicID ? ? 0 ) ) ) & &
AppointmentType . isArrived ( widget . patientAppointmentHistoryResponseModel ) )
? SizedBox . shrink ( )
: Expanded (
flex: 2 ,
child: Container (
height: 40. h ,
width: 40. w ,
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . textColor ,
borderRadius: 10. r ,
) ,
) ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) . onPress ( ( ) {
Navigator . of ( context )
. push (
CustomPageRoute (
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
child: Padding (
padding: EdgeInsets . all ( 10. w ) ,
child: Transform . flip (
flipX: appState . isArabic ( ) ,
child: Utils . buildSvgWithAssets (
iconColor: AppColors . whiteColor ,
icon: AppAssets . forward_arrow_icon_small ,
width: 40. w ,
height: 40. h ,
fit: BoxFit . contain ,
) ,
) ,
) ,
)
. then ( ( val ) {
/ / widget . myAppointmentsViewModel . initAppointmentsViewModel ( ) ;
/ / widget . myAppointmentsViewModel . getPatientAppointments ( true , false ) ;
} ) ;
} ) ,
) ,
] ,
)
: / / Doctor is not active - show only View Details button
CustomButton (
text: LocaleKeys . viewDetails . tr ( context: context ) ,
onPressed: ( ) {
Navigator . of ( context )
. push (
CustomPageRoute (
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) ,
)
. then ( ( _ ) {
widget . myAppointmentsViewModel . initAppointmentsViewModel ( ) ;
widget . myAppointmentsViewModel . getPatientAppointments ( true , false ) ;
} ) ;
} ,
backgroundColor: AppColors . secondaryLightRedColor ,
borderColor: AppColors . secondaryLightRedColor ,
textColor: AppColors . primaryRedColor ,
fontSize: ( isFoldable | | isTablet ) ? 12. f : 14. f ,
fontWeight: FontWeight . w600 ,
borderRadius: 12. r ,
padding: EdgeInsets . symmetric ( horizontal: 10. w ) ,
height: 40. h ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
] ,
) . paddingAll ( 16. w ) ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) . onPress ( ( ) {
Navigator . of ( context )
. push (
CustomPageRoute (
page: AppointmentDetailsPage (
patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) ,
)
. then ( ( val ) {
/ / widget . myAppointmentsViewModel . initAppointmentsViewModel ( ) ;
/ / widget . myAppointmentsViewModel . getPatientAppointments ( true , false ) ;
} ) ;
} ) ,
) ,
] ,
)
: / / Doctor is not active - show only View Details button
CustomButton (
text: LocaleKeys . viewDetails . tr ( context: context ) ,
onPressed: ( ) {
Navigator . of ( context )
. push (
CustomPageRoute (
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) ,
)
. then ( ( _ ) {
widget . myAppointmentsViewModel . initAppointmentsViewModel ( ) ;
widget . myAppointmentsViewModel . getPatientAppointments ( true , false ) ;
} ) ;
} ,
backgroundColor: AppColors . secondaryLightRedColor ,
borderColor: AppColors . secondaryLightRedColor ,
textColor: AppColors . primaryRedColor ,
fontSize: ( isFoldable | | isTablet ) ? 12. f : 14. f ,
fontWeight: FontWeight . w600 ,
borderRadius: 12. r ,
padding: EdgeInsets . symmetric ( horizontal: 10. w ) ,
height: 40. h ,
) . toShimmer2 ( isShow: widget . myAppointmentsViewModel . isMyAppointmentsLoading ) ,
] ,
) . paddingAll ( 16. w ) ,
) ,
) ,
] ,
) ;
@ -393,16 +417,16 @@ class _MedicalFileAppointmentCardState extends State<MedicalFileAppointmentCard>
/ / No action needed - go to details
Navigator . of ( context )
. push ( CustomPageRoute (
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
. then ( ( val ) { } ) ;
break ;
case 10 :
/ / Confirm appointment - go to details
Navigator . of ( context )
. push ( CustomPageRoute (
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
. then ( ( val ) { } ) ;
break ;
case 15 :
@ -425,41 +449,42 @@ class _MedicalFileAppointmentCardState extends State<MedicalFileAppointmentCard>
children: [
/ / Message text
LocaleKeys . upcomingPaymentPending . tr ( context: context ) . toText14 (
color: AppColors . textColor ,
isCenter: true ,
) ,
color: AppColors . textColor ,
isCenter: true ,
) ,
SizedBox ( height: 24. h ) ,
/ / Countdown Timer - DD : HH : MM : SS format with labels
Directionality (
textDirection: ui . TextDirection . ltr , child: Row (
mainAxisAlignment: MainAxisAlignment . center ,
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
/ / Days
_buildTimeUnit (
_timeRemaining ! = null ? _timeRemaining ! . inDays . toString ( ) . padLeft ( 2 , ' 0 ' ) : ' 00 ' ,
LocaleKeys . days . tr ( context: context ) ,
) ,
_buildTimeSeparator ( ) ,
/ / Hours
_buildTimeUnit (
_timeRemaining ! = null ? _timeRemaining ! . inHours . remainder ( 24 ) . toString ( ) . padLeft ( 2 , ' 0 ' ) : ' 00 ' ,
LocaleKeys . hours . tr ( context: context ) ,
) ,
_buildTimeSeparator ( ) ,
/ / Minutes
_buildTimeUnit (
_timeRemaining ! = null ? _timeRemaining ! . inMinutes . remainder ( 60 ) . toString ( ) . padLeft ( 2 , ' 0 ' ) : ' 00 ' ,
LocaleKeys . minutes . tr ( context: context ) ,
) ,
_buildTimeSeparator ( ) ,
/ / Seconds
_buildTimeUnit (
_timeRemaining ! = null ? _timeRemaining ! . inSeconds . remainder ( 60 ) . toString ( ) . padLeft ( 2 , ' 0 ' ) : ' 00 ' ,
LocaleKeys . seconds . tr ( context: context ) ,
) ,
] ,
) ) ,
textDirection: ui . TextDirection . ltr ,
child: Row (
mainAxisAlignment: MainAxisAlignment . center ,
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
/ / Days
_buildTimeUnit (
_timeRemaining ! = null ? _timeRemaining ! . inDays . toString ( ) . padLeft ( 2 , ' 0 ' ) : ' 00 ' ,
LocaleKeys . days . tr ( context: context ) ,
) ,
_buildTimeSeparator ( ) ,
/ / Hours
_buildTimeUnit (
_timeRemaining ! = null ? _timeRemaining ! . inHours . remainder ( 24 ) . toString ( ) . padLeft ( 2 , ' 0 ' ) : ' 00 ' ,
LocaleKeys . hours . tr ( context: context ) ,
) ,
_buildTimeSeparator ( ) ,
/ / Minutes
_buildTimeUnit (
_timeRemaining ! = null ? _timeRemaining ! . inMinutes . remainder ( 60 ) . toString ( ) . padLeft ( 2 , ' 0 ' ) : ' 00 ' ,
LocaleKeys . minutes . tr ( context: context ) ,
) ,
_buildTimeSeparator ( ) ,
/ / Seconds
_buildTimeUnit (
_timeRemaining ! = null ? _timeRemaining ! . inSeconds . remainder ( 60 ) . toString ( ) . padLeft ( 2 , ' 0 ' ) : ' 00 ' ,
LocaleKeys . seconds . tr ( context: context ) ,
) ,
] ,
) ) ,
SizedBox ( height: 24. h ) ,
/ / Green Acknowledge button with checkmark icon
CustomButton (
@ -502,26 +527,25 @@ class _MedicalFileAppointmentCardState extends State<MedicalFileAppointmentCard>
/ / Confirm livecare - go to details
Navigator . of ( context )
. push ( CustomPageRoute (
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
. then ( ( val ) { } ) ;
break ;
case 90 :
/ / Check - in - go to details
Navigator . of ( context )
. push ( CustomPageRoute (
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
. then ( ( val ) { } ) ;
break ;
default :
/ / Default - go to details
Navigator . of ( context )
. push ( CustomPageRoute (
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
page: AppointmentDetailsPage ( patientAppointmentHistoryResponseModel: widget . patientAppointmentHistoryResponseModel ) ,
) )
. then ( ( val ) { } ) ;
}
}
}