import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/dashboard_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/home/dashboard_slider-item-widget.dart'; import 'package:doctor_app_flutter/screens/home/dashboard_swipe_widget.dart'; import 'package:doctor_app_flutter/screens/home/home_patient_card.dart'; import 'package:doctor_app_flutter/screens/live_care/live_care_patient_screen.dart'; import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.dart'; import 'package:doctor_app_flutter/screens/patients/PatientsInPatientScreen.dart'; import 'package:doctor_app_flutter/screens/patients/out_patient/out_patient_screen.dart'; import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/referral/patient_referral_screen.dart'; import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'home_screen_header.dart'; import 'label.dart'; class HomeScreen extends StatefulWidget { HomeScreen({Key? key, this.title}) : super(key: key); final String? title; final String iconURL = 'assets/images/dashboard_icon/'; @override _HomeScreenState createState() => _HomeScreenState(); } class _HomeScreenState extends State { bool isLoading = false; ProjectViewModel ?projectsProvider; DoctorProfileModel ?profile; bool isExpanded = false; bool isInpatient = false; int sliderActiveIndex = 0; String? clinicId; late AuthenticationViewModel authenticationViewModel; int colorIndex = 0; final GlobalKey scaffoldKey = new GlobalKey(); @override Widget build(BuildContext context) { ProjectViewModel projectsProvider = Provider.of(context); authenticationViewModel = Provider.of(context); FocusScopeNode currentFocus = FocusScope.of(context); if (!currentFocus.hasPrimaryFocus) { currentFocus.unfocus(); } return BaseView( onModelReady: (model) async { await model.setFirebaseNotification(projectsProvider, authenticationViewModel); await model.getDashboard(); await model.getDoctorProfile(isGetProfile: true); await model.checkDoctorHasLiveCare(); // await model.getSpecialClinicalCareList(); }, builder: (_, model, w) => AppScaffold( baseViewModel: model, isShowAppBar: true, appBar: HomeScreenHeader( model: model, onOpenDrawer: (){ Scaffold.of(context).openDrawer(); }, ), body: ListView(children: [ Column(children: [ // SizedBox( // height: SizeConfig.heightMultiplier * 1.4, // ), model.dashboardItemsList.length > 0 ? DashboardSwipeWidget( model.dashboardItemsList, model, (sliderIndex) { setState(() { sliderActiveIndex = sliderIndex; }); }, ) : SizedBox(), // SizedBox( // height: SizeConfig.heightMultiplier * 1.4, // ), model.dashboardItemsList.length > 0 ? FractionallySizedBox( widthFactor: 0.94, child: Container( child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox( height: SizeConfig.heightMultiplier * 3, ), sliderActiveIndex == 1 ? DashboardSliderItemWidget( model.dashboardItemsList[4]) : sliderActiveIndex == 0 ? DashboardSliderItemWidget( model.dashboardItemsList[3]) : DashboardSliderItemWidget( model.dashboardItemsList[6]), ], ), ), ) : SizedBox(), SizedBox( height: SizeConfig.heightMultiplier * 1.4, ), FractionallySizedBox( // widthFactor: 0.90, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.only( topRight: Radius.circular(70), )), padding: EdgeInsets.only(left: SizeConfig.widthMultiplier * 3.1, top: 10, right: SizeConfig.widthMultiplier * 3.1), margin: EdgeInsets.only(top: 10), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: SizeConfig.heightMultiplier * 1, ), Container( child: Label( firstLine: TranslationBase.of(context).patients!, secondLine: TranslationBase.of(context).services!, )), SizedBox( height: SizeConfig.heightMultiplier * .6, ), Container( height: SizeConfig.heightMultiplier * (SizeConfig.isHeightVeryShort ? 16 : SizeConfig.isHeightShort ? 14 : SizeConfig.isHeightLarge?15:13), child: ListView( scrollDirection: Axis.horizontal, children: [ ...homePatientsCardsWidget(model, projectsProvider), ], ), ), SizedBox(height: SizeConfig.heightMultiplier* (SizeConfig.isHeightVeryShort?3:SizeConfig.isHeightShort?4:2)) ], ), ), ), ]), ]), ), ); } List homePatientsCardsWidget(DashboardViewModel model,projectsProvider) { colorIndex = 0; // List backgroundColors = List(3); // backgroundColors[0] = Color(0xffD02127); // backgroundColors[1] = Colors.grey[300]; // backgroundColors[2] = Color(0xff2B353E); // List backgroundIconColors = List(3); // backgroundIconColors[0] = Colors.white12; // backgroundIconColors[1] = Colors.white38; // backgroundIconColors[2] = Colors.white10; // List textColors = List(3); // textColors[0] = Colors.white; // textColors[1] = Color(0xFF353E47); // textColors[2] = Colors.white; // // List patientCards = []; // List backgroundColors = []; backgroundColors.add(Color(0xffD02127)); backgroundColors.add(Colors.grey[300]!); backgroundColors.add(Color(0xff2B353E)); List backgroundIconColors = []; backgroundIconColors.add(Colors.white12); backgroundIconColors.add(Colors.white38); backgroundIconColors.add(Colors.white10); List textColors = []; textColors.add(Colors.white); textColors.add(Colors.black); textColors.add(Colors.white); List patientCards = []; if (model.hasVirtualClinic) { patientCards.add(HomePatientCard( backgroundColor: backgroundColors[colorIndex], backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.livecare, textColor: textColors[colorIndex], iconSize: 21, text: "${TranslationBase.of(context).liveCare}\n${TranslationBase.of(context).patients}", onTap: () { Navigator.push( context, FadePage( page: LiveCarePatientScreen(), ), ); }, )); changeColorIndex(); } patientCards.add(HomePatientCard( backgroundColor: backgroundColors[colorIndex], backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.inpatient, textColor: textColors[colorIndex], text: TranslationBase.of(context).myInPatient!, onTap: () { Navigator.push( context, FadePage( page: PatientInPatientScreen(specialClinic: model!.getSpecialClinic(clinicId??projectsProvider !.doctorClinicsList[0]!.clinicID!),), ), ); }, )); changeColorIndex(); patientCards.add(HomePatientCard( backgroundColor: backgroundColors[colorIndex], backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.arrival_patients, textColor: textColors[colorIndex], text: TranslationBase.of(context).myOutPatient_2lines!, onTap: () { String date = AppDateUtils.convertDateToFormat( DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day), 'yyyy-MM-dd'); Navigator.push( context, MaterialPageRoute( builder: (context) => OutPatientsScreen( patientSearchRequestModel: PatientSearchRequestModel( from: date, to: date, doctorID: authenticationViewModel.doctorProfile!.doctorID)), )); }, )); changeColorIndex(); patientCards.add(HomePatientCard( backgroundColor: backgroundColors[colorIndex], backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.referral_1, textColor: textColors[colorIndex], text: TranslationBase.of(context).myPatientsReferral!, onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => PatientReferralScreen(), ), ); }, )); changeColorIndex(); patientCards.add(HomePatientCard( backgroundColor: backgroundColors[colorIndex], backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.search, textColor: textColors[colorIndex], text: TranslationBase.of(context).searchPatientDashBoard!, onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => PatientSearchScreen(), )); }, )); changeColorIndex(); patientCards.add(HomePatientCard( backgroundColor: backgroundColors[colorIndex], backgroundIconColor: backgroundIconColors[colorIndex], cardIcon: DoctorApp.search_medicines, textColor: textColors[colorIndex], text: TranslationBase.of(context).searchMedicineDashboard!, onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => MedicineSearchScreen(), )); }, )); changeColorIndex(); return [...List.generate(patientCards.length, (index) => patientCards[index]).toList()]; } changeColorIndex() { colorIndex++; if (colorIndex > 2) { colorIndex = 0; } } }