From 02307e8fac2b23bc6fa77518ad85a59fd995cf94 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Tue, 22 Jun 2021 12:03:02 +0300 Subject: [PATCH] fix header and verification method --- .../patient_profile_app_bar_model.dart | 7 +- .../auth/verification_methods_screen.dart | 1 - .../patient_profile_screen.dart | 29 +- .../auth/verification_methods_list.dart | 8 +- .../profile/patient-profile-app-bar.dart | 20 +- ...ent-profile-header-new-design-app-bar.dart | 365 ------------------ 6 files changed, 43 insertions(+), 387 deletions(-) delete mode 100644 lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart diff --git a/lib/models/patient/profile/patient_profile_app_bar_model.dart b/lib/models/patient/profile/patient_profile_app_bar_model.dart index ea576abc..97862aaa 100644 --- a/lib/models/patient/profile/patient_profile_app_bar_model.dart +++ b/lib/models/patient/profile/patient_profile_app_bar_model.dart @@ -19,6 +19,8 @@ class PatientProfileAppBarModel { String? clinic; bool? isAppointmentHeader; bool? isFromLabResult; + Stream ?videoCallDurationStream; + PatientProfileAppBarModel( {this.height = 0.0, @@ -38,7 +40,7 @@ class PatientProfileAppBarModel { this.visitDate, this.clinic, this.isAppointmentHeader = false, - this.isFromLabResult =false}); + this.isFromLabResult =false, this.videoCallDurationStream}); PatientProfileAppBarModel.fromJson(Map json) { height = json['height']; @@ -59,6 +61,8 @@ class PatientProfileAppBarModel { clinic = json['clinic']; isAppointmentHeader = json['isAppointmentHeader']; isFromLabResult = json['isFromLabResult']; + videoCallDurationStream = json['videoCallDurationStream']; + } Map toJson() { @@ -81,6 +85,7 @@ class PatientProfileAppBarModel { data['clinic'] = this.clinic; data['isAppointmentHeader'] = this.isAppointmentHeader; data['isFromLabResult'] = this.isFromLabResult; + data['videoCallDurationStream'] = this.videoCallDurationStream; return data; } } diff --git a/lib/screens/auth/verification_methods_screen.dart b/lib/screens/auth/verification_methods_screen.dart index d41c6e2b..cf4d7d78 100644 --- a/lib/screens/auth/verification_methods_screen.dart +++ b/lib/screens/auth/verification_methods_screen.dart @@ -52,7 +52,6 @@ class _VerificationMethodsScreenState extends State { return AppScaffold( isShowAppBar: false, backgroundColor: Theme.of(context).scaffoldBackgroundColor, - // baseViewModel: model, body: SingleChildScrollView( child: Center( child: FractionallySizedBox( diff --git a/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart b/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart index 724bdb15..e5f858e7 100644 --- a/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart +++ b/lib/screens/patients/profile/profile_screen/patient_profile_screen.dart @@ -1,12 +1,10 @@ import 'dart:async'; -import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/service/VideoCallService.dart'; import 'package:doctor_app_flutter/core/viewModel/LiveCarePatientViewModel.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart'; import 'package:doctor_app_flutter/models/SOAP/PostEpisodeReqModel.dart'; -import 'package:doctor_app_flutter/models/livecare/session_status_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/profile/patient_profile_app_bar_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; @@ -15,12 +13,9 @@ import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profi import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_other.dart'; import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_search.dart'; import 'package:doctor_app_flutter/util/NotificationPermissionUtils.dart'; -import 'package:doctor_app_flutter/util/VideoChannel.dart'; -import 'package:doctor_app_flutter/util/dr_app_toast_msg.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/patients/profile/patient-profile-app-bar.dart'; -import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; @@ -134,16 +129,20 @@ class _PatientProfileScreenState extends State with Single children: [ Column( children: [ - PatientProfileHeaderNewDesignAppBar(patient, arrivalType, patientType, - videoCallDurationStream: videoCallDurationStream, - isInpatient: isInpatient, - isFromLiveCare: isFromLiveCare, - height: (patient.patientStatusType != null && patient.patientStatusType == 43) - ? 210 - : isDischargedPatient - ? 240 - : 0, - isDischargedPatient: isDischargedPatient), + PatientProfileAppBar( + patientProfileAppBarModel: PatientProfileAppBarModel( + patient: patient, + videoCallDurationStream: videoCallDurationStream, + isInpatient: isInpatient, + isFromLiveCare: isFromLiveCare, + height: (patient.patientStatusType != null && + patient.patientStatusType == 43) + ? 210 + : isDischargedPatient + ? 240 + : 0, + isDischargedPatient: isDischargedPatient), + ), Container( height: !isSearchAndOut ? isDischargedPatient diff --git a/lib/widgets/auth/verification_methods_list.dart b/lib/widgets/auth/verification_methods_list.dart index 0e7a61c7..cbd665ef 100644 --- a/lib/widgets/auth/verification_methods_list.dart +++ b/lib/widgets/auth/verification_methods_list.dart @@ -38,14 +38,14 @@ class _VerificationMethodsListState extends State { return MethodTypeCard( assetPath: 'assets/images/verify-whtsapp.png', onTap: () => {widget.authenticateUser!(AuthMethodTypes.WhatsApp, true)}, - label: TranslationBase.of(context).verifyWith ?? "" +"\n"+ TranslationBase.of(context).verifyWhatsApp!, + label: TranslationBase.of(context).verifyWith! + "\n"+ TranslationBase.of(context).verifyWhatsApp!, ); break; case AuthMethodTypes.SMS: return MethodTypeCard( assetPath: "assets/images/verify-sms.png", onTap: () => {widget.authenticateUser!(AuthMethodTypes.SMS, true)}, - label: TranslationBase.of(context).verifyWith ?? "" + "\n"+ TranslationBase.of(context).verifySMS!, + label: TranslationBase.of(context).verifyWith! + "\n"+ TranslationBase.of(context).verifySMS!, ); break; case AuthMethodTypes.Fingerprint: @@ -56,7 +56,7 @@ class _VerificationMethodsListState extends State { widget.authenticateUser!(AuthMethodTypes.Fingerprint, true); } }, - label: TranslationBase.of(context).verifyWith ?? "" + "\n"+TranslationBase.of(context).verifyFingerprint!, + label: TranslationBase.of(context).verifyWith! + "\n"+TranslationBase.of(context).verifyFingerprint!, ); break; case AuthMethodTypes.FaceID: @@ -67,7 +67,7 @@ class _VerificationMethodsListState extends State { widget.authenticateUser!(AuthMethodTypes.FaceID, true); } }, - label: TranslationBase.of(context).verifyWith ?? "" + "\n"+TranslationBase.of(context).verifyFaceID!, + label: TranslationBase.of(context).verifyWith! + "\n"+TranslationBase.of(context).verifyFaceID!, ); break; diff --git a/lib/widgets/patients/profile/patient-profile-app-bar.dart b/lib/widgets/patients/profile/patient-profile-app-bar.dart index d6c12dc8..90e8d304 100644 --- a/lib/widgets/patients/profile/patient-profile-app-bar.dart +++ b/lib/widgets/patients/profile/patient-profile-app-bar.dart @@ -90,6 +90,24 @@ class PatientProfileAppBar extends StatelessWidget with PreferredSizeWidget { ), ), ), + if(patientProfileAppBarModel.videoCallDurationStream != null) + StreamBuilder( + stream: patientProfileAppBarModel.videoCallDurationStream, + builder: (BuildContext context, AsyncSnapshot snapshot) { + if(snapshot.hasData && snapshot.data != null) + return InkWell( + onTap: (){ + }, + child: Container( + decoration: BoxDecoration(color: Colors.red, borderRadius: BorderRadius.circular(20)), + padding: EdgeInsets.symmetric(vertical: 2, horizontal: 10), + child: Text(snapshot.data!, style: TextStyle(color: Colors.white),), + ), + ); + else + return Container(); + }, + ), ]), ), Row(children: [ @@ -502,7 +520,7 @@ class PatientProfileAppBar extends StatelessWidget with PreferredSizeWidget { : patientProfileAppBarModel.patient!.admissionDate != null ? patientProfileAppBarModel.isFromLabResult! ? 170 - : 150 + : 170 : patientProfileAppBarModel.isDischargedPatient! ? 240 : 130) diff --git a/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart b/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart deleted file mode 100644 index d5ddd66c..00000000 --- a/lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart +++ /dev/null @@ -1,365 +0,0 @@ -import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/config/size_config.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:url_launcher/url_launcher.dart'; - -class PatientProfileHeaderNewDesignAppBar extends StatelessWidget with PreferredSizeWidget { - final PatiantInformtion patient; - final String patientType; - final String arrivalType; - final double height; - final bool isInpatient; - final bool isDischargedPatient; - final bool isFromLiveCare; - - final Stream videoCallDurationStream; - - PatientProfileHeaderNewDesignAppBar(this.patient, this.patientType, this.arrivalType, - {this.height = 0.0, this.isInpatient = false, this.isDischargedPatient = false, this.isFromLiveCare = false, required this.videoCallDurationStream}); - - @override - Widget build(BuildContext context) { - int gender = 1; - if (patient.patientDetails != null) { - gender = patient.patientDetails!.gender!; - } else { - gender = patient.gender!; - } - return Container( - padding: EdgeInsets.only( - left: 0, - right: 5, - bottom: 5, - ), - decoration: BoxDecoration( - color: Colors.white, - ), - height: height == 0 - ? isInpatient - ? 215 - : 200 - : height, - child: Container( - padding: EdgeInsets.only(left: 10, right: 10, bottom: 10), - margin: EdgeInsets.only(top: 50), - child: Column( - 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.fullName ?? patient.patientDetails!.fullName), - fontSize: SizeConfig.textMultiplier * 1.8, - 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, - ), - ), - ), - StreamBuilder( - stream: videoCallDurationStream, - builder: (BuildContext context, AsyncSnapshot snapshot) { - if(snapshot.hasData && snapshot.data != null) - return InkWell( - onTap: (){ - }, - child: Container( - decoration: BoxDecoration(color: Colors.red, borderRadius: BorderRadius.circular(20)), - padding: EdgeInsets.symmetric(vertical: 2, horizontal: 10), - child: Text(snapshot.data!, style: TextStyle(color: Colors.white),), - ), - ); - else - return Container(); - }, - ), - ]), - ), - 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( - patient.arrivedOn != null - ? AppDateUtils.convertStringToDateFormat( - patient.arrivedOn ?? "", 'MM-dd-yyyy HH:mm') - : '', - fontFamily: 'Poppins', - fontWeight: FontWeight.w600, - ) - ], - )) - : SizedBox(), - if (SERVICES_PATIANT2[int.parse(patientType)] == "List_MyOutPatient" && !isFromLiveCare) - 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 ?? ''), - 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 ?? patient.nationalityId ?? '', - fontWeight: FontWeight.bold, - fontSize: 12, - ), - patient.nationalityFlagURL != 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, isServerFormat: !isFromLiveCare)}", - style: TextStyle(fontWeight: FontWeight.w700, fontSize: 14)), - ], - ), - ), - ), - if (isInpatient) - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - child: RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 2.0 * SizeConfig.textMultiplier, - color: Colors.black, - fontFamily: 'Poppins', - ), - children: [ - new TextSpan( - text: patient.admissionDate == null - ? "" - : TranslationBase.of(context).admissionDate! + " : ", - style: TextStyle(fontSize: 14)), - new TextSpan( - text: patient.admissionDate == null - ? "" - : "${AppDateUtils.convertDateFromServerFormat(patient.admissionDate.toString(), 'yyyy-MM-dd')}", - style: TextStyle(fontWeight: FontWeight.w700, fontSize: 15)), - ]))), - if (patient.admissionDate != null) - Row( - children: [ - AppText( - "${TranslationBase.of(context).numOfDays}: ", - fontSize: 15, - ), - if (isDischargedPatient && patient.dischargeDate != null) - AppText( - "${AppDateUtils.getDateTimeFromServerFormat(patient.dischargeDate ?? "").difference(AppDateUtils.getDateTimeFromServerFormat(patient.admissionDate ?? "")).inDays + 1}", - fontSize: 15, - fontWeight: FontWeight.w700) - else - AppText( - "${DateTime.now().difference(AppDateUtils.getDateTimeFromServerFormat(patient.admissionDate ?? "")).inDays + 1}", - fontSize: 15, - fontWeight: FontWeight.w700), - ], - ), - ], - ) - ], - ), - ), - ]), - ], - ), - ), - ); - } - - convertDateFormat2(String str) { - String? newDate; - const start = "/Date("; - if (str.isNotEmpty) { - const end = "+0300)"; - - 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 ?? ''; - } - - 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)); - } - - @override - Size get preferredSize => Size(double.maxFinite, 200); -}