@ -9,6 +9,7 @@ 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/features/immediate_livecare/immediate_livecare_view_model.dart ' ;
import ' package:hmg_patient_app_new/features/my_appointments/appointment_via_region_viewmodel.dart ' ;
@ -22,6 +23,7 @@ import 'package:hmg_patient_app_new/presentation/book_appointment/search_doctor_
import ' package:hmg_patient_app_new/presentation/book_appointment/select_clinic_page.dart ' ;
import ' package:hmg_patient_app_new/widgets/appbar/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/common_bottom_sheet.dart ' show showCommonBottomSheetWithoutHeight ;
import ' package:hmg_patient_app_new/widgets/custom_tab_bar.dart ' ;
import ' package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart ' ;
@ -43,9 +45,11 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
late AppointmentViaRegionViewmodel regionalViewModel ;
late BookAppointmentsViewModel bookAppointmentsViewModel ;
late ImmediateLiveCareViewModel immediateLiveCareViewModel ;
late final AuthenticationViewModel authVM ;
@ override
void initState ( ) {
authVM = context . read < AuthenticationViewModel > ( ) ;
scheduleMicrotask ( ( ) {
bookAppointmentsViewModel . selectedTabIndex = 0 ;
bookAppointmentsViewModel . initBookAppointmentViewModel ( ) ;
@ -204,11 +208,12 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
) . paddingSymmetrical ( 24. h , 0. h ) ;
case 1 :
/ / TODO: Get LiveCare type Select UI from Hussain
return Column (
children: [
Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . whiteColor ,
return appState . isAuthenticated
? Column (
children: [
Container (
decoration: RoundedRectangleBorder ( ) . toSmoothCornerDecoration (
color: AppColors . whiteColor ,
borderRadius: 24. h ,
hasShadow: false ,
) ,
@ -318,7 +323,8 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
) ,
) ,
] ,
) . paddingSymmetrical ( 24. h , 0. h ) ;
) . paddingSymmetrical ( 24. h , 0. h )
: getLiveCareNotLoggedInUI ( ) ;
default :
SizedBox . shrink ( ) ;
}
@ -375,4 +381,93 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
} ) ;
}
}
Widget getLiveCareNotLoggedInUI ( ) {
return Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Row (
children: [
Utils . buildSvgWithAssets ( icon: AppAssets . immediate_service_icon , width: 58. h , height: 58. h ) ,
SizedBox ( width: 18. h ) ,
Expanded (
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
" Immediate service " . needTranslation . toText18 ( color: AppColors . textColor , isBold: true ) ,
" No need to wait, you will get medical consultation immediately via video call " . needTranslation . toText14 ( color: AppColors . greyTextColor , weight: FontWeight . w500 ) ,
] ,
) ,
) ,
] ,
) ,
SizedBox ( height: 24. h ) ,
Row (
children: [
Utils . buildSvgWithAssets ( icon: AppAssets . no_visit_icon , width: 58. h , height: 58. h ) ,
SizedBox ( width: 18. h ) ,
Expanded (
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
" No visit required " . needTranslation . toText18 ( color: AppColors . textColor , isBold: true ) ,
LocaleKeys . livecarePoint5 . tr ( context: context ) . toText14 ( color: AppColors . greyTextColor , weight: FontWeight . w500 ) ,
] ,
) ,
) ,
] ,
) ,
SizedBox ( height: 24. h ) ,
Row (
children: [
Utils . buildSvgWithAssets ( icon: AppAssets . doctor_contact_icon , width: 58. h , height: 58. h ) ,
SizedBox ( width: 18. h ) ,
Expanded (
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
" Doctor will contact " . needTranslation . toText18 ( color: AppColors . textColor , isBold: true ) ,
" A specialised doctor will contact you and will be able to view your medical history " . needTranslation . toText14 ( color: AppColors . greyTextColor , weight: FontWeight . w500 ) ,
] ,
) ,
) ,
] ,
) ,
SizedBox ( height: 24. h ) ,
Row (
children: [
Utils . buildSvgWithAssets ( icon: AppAssets . free_med_delivery_icon , width: 58. h , height: 58. h ) ,
SizedBox ( width: 18. h ) ,
Expanded (
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
" Free medicine delivery " . needTranslation . toText18 ( color: AppColors . textColor , isBold: true ) ,
" Offers free medicine delivery for the LiveCare appointment " . needTranslation . toText14 ( color: AppColors . greyTextColor , weight: FontWeight . w500 ) ,
] ,
) ,
) ,
] ,
) ,
SizedBox ( height: 36. h ) ,
CustomButton (
text: " Login to use this service " . needTranslation ,
onPressed: ( ) async {
await authVM . onLoginPressed ( ) ;
} ,
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 ,
icon: AppAssets . login1 ,
iconColor: AppColors . whiteColor ,
iconSize: 24. h ,
) ,
] ,
) . paddingSymmetrical ( 24. h , 0. h ) ;
}
}