From 95425d956856746a9a576f731496849307fd2842 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Thu, 10 Jun 2021 12:10:33 +0300 Subject: [PATCH] fix issues in header --- .../radiology/radiology_details_page.dart | 5 +- .../radiology/radiology_home_page.dart | 1 + .../prescription/prescription_items_page.dart | 1 - lib/widgets/patients/profile/_1.dart | 507 ++++++++++++++++++ .../profile/patient-profile-app-bar.dart | 284 +++++----- 5 files changed, 653 insertions(+), 145 deletions(-) create mode 100644 lib/widgets/patients/profile/_1.dart diff --git a/lib/screens/patients/profile/radiology/radiology_details_page.dart b/lib/screens/patients/profile/radiology/radiology_details_page.dart index 54dfe3ec..cb0cd99a 100644 --- a/lib/screens/patients/profile/radiology/radiology_details_page.dart +++ b/lib/screens/patients/profile/radiology/radiology_details_page.dart @@ -16,13 +16,15 @@ class RadiologyDetailsPage extends StatelessWidget { final PatiantInformtion patient; final String patientType; final String arrivalType; + final bool isInpatient; RadiologyDetailsPage( {Key key, this.finalRadiology, this.patient, this.patientType, - this.arrivalType}); + this.arrivalType, + this.isInpatient = false}); @override Widget build(BuildContext context) { @@ -44,7 +46,6 @@ class RadiologyDetailsPage extends StatelessWidget { profileUrl: finalRadiology.doctorImageURL, invoiceNO: finalRadiology.invoiceNo.toString(), isAppointmentHeader: true, - height: 325, ), isShowAppBar: true, diff --git a/lib/screens/patients/profile/radiology/radiology_home_page.dart b/lib/screens/patients/profile/radiology/radiology_home_page.dart index bf50ea11..8d0946c5 100644 --- a/lib/screens/patients/profile/radiology/radiology_home_page.dart +++ b/lib/screens/patients/profile/radiology/radiology_home_page.dart @@ -210,6 +210,7 @@ class _RadiologyHomePageState extends State { finalRadiology: model.radiologyList[index], patient: patient, + isInpatient:isInpatient ), ), ); diff --git a/lib/screens/prescription/prescription_items_page.dart b/lib/screens/prescription/prescription_items_page.dart index ac9ebb2a..e888dddd 100644 --- a/lib/screens/prescription/prescription_items_page.dart +++ b/lib/screens/prescription/prescription_items_page.dart @@ -39,7 +39,6 @@ class PrescriptionItemsPage extends StatelessWidget { doctorName: prescriptions.doctorName, profileUrl: prescriptions.doctorImageURL, isAppointmentHeader: true, - height: 325, ), body: SingleChildScrollView( child: Container( diff --git a/lib/widgets/patients/profile/_1.dart b/lib/widgets/patients/profile/_1.dart new file mode 100644 index 00000000..df9f11df --- /dev/null +++ b/lib/widgets/patients/profile/_1.dart @@ -0,0 +1,507 @@ +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/size_config.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/patient/patiant_info_model.dart'; +import 'package:doctor_app_flutter/util/date-utils.dart'; +import 'package:doctor_app_flutter/util/helpers.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; +import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'large_avatar.dart'; + +class PatientProfileHeaderWhitAppointment extends StatelessWidget { + + final PatiantInformtion patient; + final String patientType; + final String arrivalType; + final String doctorName; + final String branch; + final DateTime appointmentDate; + final String profileUrl; + final String invoiceNO; + final String orderNo; + final bool isPrescriptions; + final String clinic; + PatientProfileHeaderWhitAppointment( + {this.patient, + this.patientType, + this.arrivalType, + this.doctorName, + this.branch, + this.appointmentDate, + this.profileUrl, + this.invoiceNO, + this.orderNo, this.isPrescriptions = false, this.clinic}); + + @override + Widget build(BuildContext context) { + int gender = 1; + if (patient.patientDetails != null) { + gender = patient.patientDetails.gender; + } else { + gender = patient.gender; + } + + ProjectViewModel projectViewModel = Provider.of(context); + return Container( + padding: EdgeInsets.only( + left: 0, right: 5, bottom: 5, top: 5), + decoration: BoxDecoration( + color: Colors.white, + ), + //height: 300, + child: Container( + padding: EdgeInsets.only(left: 10, right: 10, bottom: 10), + margin: EdgeInsets.only(top: 50), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: EdgeInsets.only(left: 12.0), + child: Row(children: [ + IconButton( + icon: Icon(Icons.arrow_back_ios), + color: Colors.black, //Colors.black, + onPressed: () => Navigator.pop(context), + ), + Expanded( + child: AppText( + patient.firstName != null ? + (Helpers.capitalize(patient.firstName) + + " " + + Helpers.capitalize( + patient.lastName)) : Helpers.capitalize(patient.patientDetails.fullName), + fontSize: SizeConfig.textMultiplier *2.2, + fontWeight: FontWeight.bold, + fontFamily: 'Poppins', + ), + ), + gender == 1 + ? Icon( + DoctorApp.male_2, + color: Colors.blue, + ) + : Icon( + DoctorApp.female_1, + color: Colors.pink, + ), + Container( + margin: EdgeInsets.symmetric(horizontal: 4), + child: InkWell( + onTap: () { + launch("tel://" + patient.mobileNumber); + }, + child: Icon( + Icons.phone, + color: Colors.black87, + ), + ), + ) + ]), + ), + Row(children: [ + Padding( + padding: EdgeInsets.only(left: 12.0), + child: Container( + width: 60, + height: 60, + child: Image.asset( + gender == 1 + ? 'assets/images/male_avatar.png' + : 'assets/images/female_avatar.png', + fit: BoxFit.cover, + ), + ), + ), + SizedBox( + width: 10, + ), + Expanded( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + SERVICES_PATIANT2[ + int.parse(patientType)] == + "patientArrivalList" + ? Container( + child: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + patient.patientStatusType == + 43 + ? AppText( + TranslationBase.of( + context) + .arrivedP, + color: Colors.green, + fontWeight: + FontWeight.bold, + fontFamily: + 'Poppins', + fontSize: 12, + ) + : AppText( + TranslationBase.of( + context) + .notArrived, + color: + Colors.red[800], + fontWeight: + FontWeight.bold, + fontFamily: + 'Poppins', + fontSize: 12, + ), + arrivalType == '1' || patient.arrivedOn == null + ? AppText( + patient.startTime != + null + ? patient + .startTime + : '', + fontFamily: + 'Poppins', + fontWeight: + FontWeight.w600, + ) + : AppText( + AppDateUtils.convertStringToDateFormat( + patient + .arrivedOn, + 'MM-dd-yyyy HH:mm'), + fontFamily: + 'Poppins', + fontWeight: + FontWeight.w600, + ) + ], + )) + : SizedBox(), + if (SERVICES_PATIANT2[ + int.parse(patientType)] == + "List_MyOutPatient") + Container( + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context) + .appointmentDate + + " : ", + fontSize: 14, + ), + patient.startTime != null + ? Container( + height: 15, + width: 60, + decoration: + BoxDecoration( + borderRadius: + BorderRadius + .circular( + 25), + color: HexColor( + "#20A169"), + ), + child: AppText( + patient.startTime, + color: Colors.white, + fontSize: 1.5 * + SizeConfig + .textMultiplier, + textAlign: TextAlign + .center, + fontWeight: + FontWeight.bold, + ), + ) + : SizedBox(), + SizedBox( + width: 3.5, + ), + Container( + child: AppText( + convertDateFormat2(patient.appointmentDate.toString()?? ''), + fontSize: 1.5 * + SizeConfig + .textMultiplier, + fontWeight: + FontWeight.bold, + ), + ), + SizedBox( + height: 0.5, + ) + ], + ), + margin: EdgeInsets.only( + top: 8, + ), + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + RichText( + text: TextSpan( + style: TextStyle( + fontSize: 1.6 * + SizeConfig + .textMultiplier, + color: Colors.black), + children: [ + new TextSpan( + text: + TranslationBase.of( + context) + .fileNumber, + style: TextStyle( + fontSize: 12, + fontFamily: + 'Poppins')), + new TextSpan( + text: patient.patientId + .toString(), + style: TextStyle( + fontWeight: + FontWeight.w700, + fontFamily: + 'Poppins', + fontSize: 14)), + ], + ), + ), + Row( + children: [ + AppText( + patient.nationalityName ?? + patient.nationality??"", + fontWeight: FontWeight.bold, + fontSize: 12, + ), + patient.nationality != null + ? ClipRRect( + borderRadius: + BorderRadius + .circular( + 20.0), + child: Image.network( + patient.nationalityFlagURL, + height: 25, + width: 30, + errorBuilder: + (BuildContext + context, + Object + exception, + StackTrace + stackTrace) { + return Text( + 'No Image'); + }, + )) + : SizedBox() + ], + ) + ], + ), + Container( + child: RichText( + text: new TextSpan( + style: new TextStyle( + fontSize: 1.6 * + SizeConfig.textMultiplier, + color: Colors.black, + fontFamily: 'Poppins', + ), + children: [ + new TextSpan( + text: TranslationBase.of( + context) + .age + + " : ", + style: TextStyle( + fontSize: 14)), + new TextSpan( + text: + "${AppDateUtils.getAgeByBirthday(patient.patientDetails != null ? patient.patientDetails.dateofBirth ??"": patient.dateofBirth??"", context)}", + style: TextStyle( + fontWeight: + FontWeight.w700, + fontSize: 14)), + ], + ), + ), + ), + ], + ), + ), + ]), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 30, + height: 30, + margin: EdgeInsets.only(left: projectViewModel.isArabic?10:85, right: projectViewModel.isArabic?85:10,top: 5), + decoration: BoxDecoration( + shape: BoxShape.rectangle, + border: Border( + bottom:BorderSide(color: Colors.grey[400],width: 2.5), + left: BorderSide(color: Colors.grey[400],width: 2.5), + ) + ), + ), + Expanded( + child: Container( + margin: EdgeInsets.only(top: 10), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: LargeAvatar( + name: doctorName, + url: profileUrl, + ), + width: 25, + height: 25, + margin: EdgeInsets.only(top: 10), + ), + Expanded( + flex: 4, + child: Container( + margin: EdgeInsets.all(10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + '${TranslationBase.of(context).dr}.$doctorName', + color: Colors.black, + fontWeight: FontWeight.w600, + fontSize: 14, + ), + if (orderNo != null && !isPrescriptions) + Row( + children: [ + AppText( + 'Order No:', + color: Colors.grey[800], + ), + AppText( + orderNo ?? '', + ) + ], + ), + if (invoiceNO != null && !isPrescriptions) + Row( + children: [ + AppText( + 'Invoice:', + color: Colors.grey[800], + ), + AppText( + invoiceNO, + ) + ], + ), + if(isPrescriptions) + Row( + children: [ + AppText( + 'Branch:', + color: Colors.grey[800], + ), + AppText( + branch?? '', + ) + ], + ), + if(isPrescriptions) + Row( + children: [ + AppText( + 'Clinic:', + color: Colors.grey[800], + ), + AppText( + clinic?? '', + ) + ], + ), + Row( + children: [ + AppText( + !isPrescriptions? 'Result Date:': 'Prescriptions Date', + color: Colors.grey[800], + ), + Expanded( + child: AppText( + '${AppDateUtils.getDayMonthYearDateFormatted(appointmentDate, isArabic: projectViewModel.isArabic)}', + ), + ) + ], + ) + ]), + ), + ), + + ], + ), + ), + ), + ], + ) + ], + ), + ), + ); + } + + convertDateFormat2(String str) { + String newDate =""; + const start = "/Date("; + const end = "+0300)"; + + if (str.isNotEmpty) { + final startIndex = str.indexOf(start); + final endIndex = str.indexOf(end, startIndex + start.length); + + var date = new DateTime.fromMillisecondsSinceEpoch( + int.parse(str.substring(startIndex + start.length, endIndex))); + newDate = date.year.toString() + + "/" + + date.month.toString().padLeft(2, '0') + + "/" + + date.day.toString().padLeft(2, '0'); + } + + return newDate.toString(); + } + + isToday(date) { + DateTime tempDate = new DateFormat("yyyy-MM-dd").parse(date); + return DateFormat("yyyy-MM-dd").format(tempDate) == + DateFormat("yyyy-MM-dd").format(DateTime.now()); + } + + myBoxDecoration() { + return BoxDecoration( + border: Border( + top: BorderSide( + color: Colors.green, + width: 5, + ), + ), + borderRadius: BorderRadius.circular(10)); + } +} diff --git a/lib/widgets/patients/profile/patient-profile-app-bar.dart b/lib/widgets/patients/profile/patient-profile-app-bar.dart index dd0c48e4..e5a51838 100644 --- a/lib/widgets/patients/profile/patient-profile-app-bar.dart +++ b/lib/widgets/patients/profile/patient-profile-app-bar.dart @@ -412,159 +412,159 @@ class PatientProfileAppBar extends StatelessWidget ), ], ), - if(isAppointmentHeader) - Row( + ], + ), + ), + ]), + if(isAppointmentHeader) + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 30, + height: 30, + margin: EdgeInsets.only( + left: projectViewModel.isArabic ? 10 : 85, + right: projectViewModel.isArabic ? 85 : 10, + top: 5), + decoration: BoxDecoration( + shape: BoxShape.rectangle, + border: Border( + bottom: BorderSide( + color: Colors.grey[400], width: 2.5), + left: BorderSide( + color: Colors.grey[400], width: 2.5), + )), + ), + Expanded( + child: Container( + margin: EdgeInsets.only(top: 10), + child: Row( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ Container( - width: 30, - height: 30, - margin: EdgeInsets.only( - left: projectViewModel.isArabic ? 10 : 85, - right: projectViewModel.isArabic ? 85 : 10, - top: 5), - decoration: BoxDecoration( - shape: BoxShape.rectangle, - border: Border( - bottom: BorderSide( - color: Colors.grey[400], width: 2.5), - left: BorderSide( - color: Colors.grey[400], width: 2.5), - )), + child: LargeAvatar( + name: doctorName ?? "", + url: profileUrl, + ), + width: 25, + height: 25, + margin: EdgeInsets.only(top: 10), ), + + Expanded( + flex: 5, child: Container( - margin: EdgeInsets.only(top: 10), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - child: LargeAvatar( - name: doctorName ?? "", - url: profileUrl, + margin: EdgeInsets.all(10), + child: Column( + crossAxisAlignment: CrossAxisAlignment + .start, + children: [ + AppText( + '${TranslationBase + .of(context) + .dr}$doctorName', + color: Colors.black, + fontWeight: FontWeight.w600, + fontSize: 9, ), - width: 25, - height: 25, - margin: EdgeInsets.only(top: 10), - ), - + if (orderNo != null && + !isPrescriptions) + Row( + children: [ + AppText('Order No: ', + color: Colors.grey[800], + fontSize: 12), + AppText(orderNo ?? '', + fontSize: 12) + ], + ), + if (invoiceNO != null && + !isPrescriptions) + Row( + children: [ + AppText('Invoice: ', + color: Colors.grey[800], + fontSize: 12), + AppText(invoiceNO ?? "", + fontSize: 12) + ], + ), + if (branch != null) + Row( + children: [ + AppText('Branch: ', + color: Colors.grey[800], + fontSize: 12), + AppText(branch ?? '', + fontSize: 12) + ], + ), - Expanded( - flex: 5, - child: Container( - margin: EdgeInsets.all(10), - child: Column( - crossAxisAlignment: CrossAxisAlignment - .start, - children: [ - AppText( - '${TranslationBase - .of(context) - .dr}$doctorName', - color: Colors.black, - fontWeight: FontWeight.w600, - fontSize: 9, + if (clinic != null) + Row( + children: [ + AppText('Clinic: ', + color: Colors.grey[800], + fontSize: 12), + AppText(clinic ?? '', + fontSize: 12) + ], + ), + if (isMedicalFile && + episode != null) + Row( + children: [ + AppText('Episode: ', + color: Colors.grey[800], + fontSize: 12), + AppText(episode ?? '', + fontSize: 12) + ], + ), + if (isMedicalFile && + visitDate != null) + Row( + children: [ + AppText('Visit Date: ', + color: Colors.grey[800], + fontSize: 12), + AppText(visitDate ?? '', + fontSize: 12) + ], + ), + if (!isMedicalFile) + Row( + children: [ + Expanded( + child: AppText( + !isPrescriptions + ? 'Result Date: ' + : 'Prescriptions Date ', + color: Colors.grey[800], + fontSize: 12, ), - if (orderNo != null && - !isPrescriptions) - Row( - children: [ - AppText('Order No: ', - color: Colors.grey[800], - fontSize: 12), - AppText(orderNo ?? '', - fontSize: 12) - ], - ), - if (invoiceNO != null && - !isPrescriptions) - Row( - children: [ - AppText('Invoice: ', - color: Colors.grey[800], - fontSize: 12), - AppText(invoiceNO ?? "", - fontSize: 12) - ], - ), - if (branch != null) - Row( - children: [ - AppText('Branch: ', - color: Colors.grey[800], - fontSize: 12), - AppText(branch ?? '', - fontSize: 12) - ], - ), - - if (clinic != null) - Row( - children: [ - AppText('Clinic: ', - color: Colors.grey[800], - fontSize: 12), - AppText(clinic ?? '', - fontSize: 12) - ], - ), - if (isMedicalFile && - episode != null) - Row( - children: [ - AppText('Episode: ', - color: Colors.grey[800], - fontSize: 12), - AppText(episode ?? '', - fontSize: 12) - ], - ), - if (isMedicalFile && - visitDate != null) - Row( - children: [ - AppText('Visit Date: ', - color: Colors.grey[800], - fontSize: 12), - AppText(visitDate ?? '', - fontSize: 12) - ], - ), - if (!isMedicalFile) - Row( - children: [ - Expanded( - child: AppText( - !isPrescriptions - ? 'Result Date: ' - : 'Prescriptions Date ', - color: Colors.grey[800], - fontSize: 12, - ), - ), - AppText( - '${AppDateUtils - .getDayMonthYearDateFormatted( - appointmentDate, - isArabic: projectViewModel - .isArabic)}', - fontSize: 14, - ) - ], - ) - ]), - ), - ), - ], - ), + ), + AppText( + '${AppDateUtils + .getDayMonthYearDateFormatted( + appointmentDate, + isArabic: projectViewModel + .isArabic)}', + fontSize: 14, + ) + ], + ) + ]), ), ), ], - ) - ], - ), - ), - ]), + ), + ), + ), + ], + ) ], ), ),