From 64fb4cb7e6451dce1befc7dc80bf0bc98cea5e8a Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Mon, 12 Apr 2021 11:41:20 +0300 Subject: [PATCH 01/16] bug fix --- lib/widgets/auth/known_user_login.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/auth/known_user_login.dart b/lib/widgets/auth/known_user_login.dart index b181aed8..cbf3c71a 100644 --- a/lib/widgets/auth/known_user_login.dart +++ b/lib/widgets/auth/known_user_login.dart @@ -319,7 +319,7 @@ class _KnownUserLoginState extends State { } navigateToHome() { - Navigator.of(context).pushNamed(HOME); + Navigator.of(context).pushReplacementNamed(HOME); } showErorrMsg(localMsg) { From f017e4c28051ed58d9f046006862b0ff723b1250 Mon Sep 17 00:00:00 2001 From: mosazaid Date: Mon, 12 Apr 2021 12:24:42 +0300 Subject: [PATCH 02/16] cahnges on UCaf --- .../profile/UCAF/UCAF-input-screen.dart | 139 +++++++----------- .../profile/vital_sign/vital_sign_item.dart | 4 +- lib/widgets/shared/app-textfield-custom.dart | 2 +- 3 files changed, 59 insertions(+), 86 deletions(-) diff --git a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart index 18939d54..c2d0d5f4 100644 --- a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart +++ b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart @@ -1,6 +1,7 @@ import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/patient-ucaf-viewmodel.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/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/patients/profile/UCAF/page-stepper-widget.dart'; @@ -145,8 +146,8 @@ class _UCAFInputScreenState extends State { ), AppTextFieldCustom( height: screenSize.height * 0.075, - hintText: - TranslationBase.of(context).durationOfIllness, + hintText: TranslationBase.of(context) + .durationOfIllness, dropDownText: "3", inputType: TextInputType.number, inputFormatters: [ @@ -163,6 +164,14 @@ class _UCAFInputScreenState extends State { children: [ Row( children: [ + Icon( + DoctorApp.warning, + size: 20, + color: Color(0xFFCC9B14), + ), + SizedBox( + width: 4, + ), AppText( "BP (H/L)", fontSize: @@ -246,7 +255,8 @@ class _UCAFInputScreenState extends State { height: 16, ), AppText( - TranslationBase.of(context).chiefComplaintsAndSymptoms, + TranslationBase.of(context) + .chiefComplaintsAndSymptoms, fontFamily: 'Poppins', fontSize: SizeConfig.textMultiplier * 2.1, fontWeight: FontWeight.w700, @@ -265,7 +275,8 @@ class _UCAFInputScreenState extends State { height: 8, ), AppTextFieldCustom( - hintText: TranslationBase.of(context).instruction, + hintText: + TranslationBase.of(context).instruction, dropDownText: helpers.parseHtmlString(model .patientChiefComplaintList[0] .chiefComplaint), @@ -288,7 +299,7 @@ class _UCAFInputScreenState extends State { (index) => CheckboxListTile( title: AppText( conditionsData[index]['name'], - fontWeight: FontWeight.bold, + fontWeight: FontWeight.normal, fontSize: SizeConfig.textMultiplier * 2.1, ), @@ -307,115 +318,77 @@ class _UCAFInputScreenState extends State { SizedBox( height: 8, ), - Container( - height: screenSize.height * 0.070, - child: TextField( - decoration: - Helpers.textFieldSelectorDecoration( - TranslationBase.of(context).other, - null, - false), - enabled: true, - controller: _otherController, - keyboardType: TextInputType.text, - )), + AppTextFieldCustom( + height: screenSize.height * 0.075, + hintText: TranslationBase.of(context).other, + dropDownText: "None", + enabled: false, + ), SizedBox( height: 8, ), - Container( - height: screenSize.height * 0.070, - child: TextField( - decoration: - Helpers.textFieldSelectorDecoration( - TranslationBase.of(context).how, - null, - false), - enabled: true, - controller: _howController, - keyboardType: TextInputType.text, - )), + AppTextFieldCustom( + height: screenSize.height * 0.075, + hintText: TranslationBase.of(context).how, + dropDownText: "None", + enabled: false, + ), SizedBox( height: 8, ), Row( children: [ Expanded( - child: Container( - height: screenSize.height * 0.070, - child: TextField( - decoration: Helpers - .textFieldSelectorDecoration( - TranslationBase.of(context) - .when, - null, - false), - enabled: true, - controller: _whenController, - keyboardType: TextInputType.text, - )), + child: AppTextFieldCustom( + height: screenSize.height * 0.075, + hintText: + TranslationBase.of(context).when, + dropDownText: "None", + enabled: false, + ), ), SizedBox( width: 4, ), Expanded( - child: Container( - height: screenSize.height * 0.070, - child: TextField( - decoration: Helpers - .textFieldSelectorDecoration( - TranslationBase.of(context) - .where, - null, - false), - enabled: true, - controller: _whereController, - keyboardType: TextInputType.text, - )), + child: AppTextFieldCustom( + height: screenSize.height * 0.075, + hintText: + TranslationBase.of(context).where, + dropDownText: "None", + enabled: false, + ), ), ], ), SizedBox( height: 8, ), - Container( - child: TextField( - decoration: - Helpers.textFieldSelectorDecoration( - TranslationBase.of(context) - .specifyPossibleLineManagement, - null, - false), - enabled: true, - controller: _managementsLineController, - keyboardType: TextInputType.text, + AppTextFieldCustom( + height: screenSize.height * 0.1, + hintText: TranslationBase.of(context).specifyPossibleLineManagement, + dropDownText: "None", + enabled: false, minLines: 4, maxLines: 6, - )), + ), SizedBox( - height: 16, + height: 26, ), AppText( TranslationBase.of(context).significantSigns, fontWeight: FontWeight.bold, - fontSize: SizeConfig.textMultiplier * 2.0, + fontSize: SizeConfig.textMultiplier * 2.1, ), SizedBox( height: 8, ), - Container( - child: TextField( - decoration: - Helpers.textFieldSelectorDecoration( - TranslationBase.of(context) - .backAbdomen, - null, - false), - enabled: true, - controller: _signsController, - keyboardType: TextInputType.multiline, - minLines: null, - maxLines: null, - )), + AppTextFieldCustom( + height: screenSize.height * 0.1, + hintText: TranslationBase.of(context).backAbdomen, + dropDownText: "BackLNeck", + enabled: false, + ), ], ), ), diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_item.dart b/lib/screens/patients/profile/vital_sign/vital_sign_item.dart index e838affa..3431a011 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_item.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_item.dart @@ -51,7 +51,7 @@ class VitalSignItem extends StatelessWidget { "$lastVal", fontFamily: 'Poppins', fontSize: SizeConfig.textMultiplier * 1.4, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.bold, margin: 0, ), Expanded( @@ -88,7 +88,7 @@ class VitalSignItem extends StatelessWidget { "$des", fontFamily: 'Poppins', fontSize: SizeConfig.textMultiplier * 1.3, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.bold, ), ), ), diff --git a/lib/widgets/shared/app-textfield-custom.dart b/lib/widgets/shared/app-textfield-custom.dart index caeb7ea2..6c52001b 100644 --- a/lib/widgets/shared/app-textfield-custom.dart +++ b/lib/widgets/shared/app-textfield-custom.dart @@ -68,7 +68,7 @@ class _AppTextFieldCustomState extends State { widget.hintText, fontFamily: 'Poppins', fontSize: SizeConfig.textMultiplier * 1.4, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), widget.dropDownText == null ? TextField( From c72d612646c91cebbf2aa9a148401fa1dc50b9e1 Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Mon, 12 Apr 2021 14:03:08 +0300 Subject: [PATCH 03/16] add prescription & add lab test changes --- .../prescription/add_prescription_form.dart | 1445 +++++++++-------- .../entity_list_checkbox_search_widget.dart | 69 +- 2 files changed, 829 insertions(+), 685 deletions(-) diff --git a/lib/screens/prescription/add_prescription_form.dart b/lib/screens/prescription/add_prescription_form.dart index 1330dae4..f6207b52 100644 --- a/lib/screens/prescription/add_prescription_form.dart +++ b/lib/screens/prescription/add_prescription_form.dart @@ -345,8 +345,9 @@ class _PrescriptionFormWidgetState extends State { suggestion .genericName), padding: - EdgeInsets.all(8.0)), + EdgeInsets.all(15.0)), itemSorter: (a, b) => 1, + suggestionsAmount: 7, itemFilter: (suggestion, input) => suggestion.genericName.toLowerCase().startsWith( input.toLowerCase()) || @@ -383,710 +384,844 @@ class _PrescriptionFormWidgetState extends State { SizedBox( height: spaceBetweenTextFileds, ), - Container( - child: Row( - children: [ - AppText( - 'Order Type', - fontWeight: FontWeight.w600, - ), - Radio( - activeColor: Color(0xFFB9382C), - value: 1, - groupValue: selectedType, - onChanged: (value) { - setSelectedType(value); - }, - ), - Text('Regular'), - ], - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - height: screenSize.height * 0.070, - width: double.infinity, - child: Row( - children: [ - Container( - width: MediaQuery.of(context) - .size - .width * - 0.550, - child: TextFields( - inputFormatters: [ - LengthLimitingTextInputFormatter( - 5), - // WhitelistingTextInputFormatter - // .digitsOnly - ], - hintText: - TranslationBase.of(context) - .strength, - controller: strengthController, - keyboardType: - TextInputType.numberWithOptions( - decimal: true, + Visibility( + visible: _selectedMedication == null + ? false + : true, + child: Container( + child: Column( + children: [ + Container( + child: Row( + children: [ + AppText( + 'Order Type', + fontWeight: FontWeight.w600, + ), + Radio( + activeColor: + Color(0xFFB9382C), + value: 1, + groupValue: selectedType, + onChanged: (value) { + setSelectedType(value); + }, + ), + Text('Regular'), + ], ), - onChanged: (String value) { - setState(() { - strengthChar = value.length; - }); - if (strengthChar >= 5) { - DrAppToastMsg.showErrorToast( - "Only 5 Digits allowed for strength"); - } - }, - onSubmit: (_) { - if (_selectedMedication != null && - duration != null && - frequency != null && - strengthController.text != - null) { - model.getBoxQuantity( - freq: frequency[ - 'parameterCode'], - duration: duration['id'], - itemCode: - _selectedMedication - .itemId, - strength: double.parse( - strengthController - .text)); - box = model.boxQuintity; + ), + SizedBox( + height: spaceBetweenTextFileds), + Container( + height: screenSize.height * 0.070, + width: double.infinity, + child: Row( + children: [ + Container( + width: MediaQuery.of(context) + .size + .width * + 0.550, + child: TextFields( + inputFormatters: [ + LengthLimitingTextInputFormatter( + 5), + // WhitelistingTextInputFormatter + // .digitsOnly + ], + hintText: + TranslationBase.of( + context) + .strength, + controller: + strengthController, + keyboardType: TextInputType + .numberWithOptions( + decimal: true, + ), + onChanged: (String value) { + setState(() { + strengthChar = + value.length; + }); + if (strengthChar >= 5) { + DrAppToastMsg + .showErrorToast( + "Only 5 Digits allowed for strength"); + } + }, + onSubmit: (_) { + if (_selectedMedication != + null && + duration != null && + frequency != null && + strengthController + .text != + null) { + model.getBoxQuantity( + freq: frequency[ + 'parameterCode'], + duration: + duration['id'], + itemCode: + _selectedMedication + .itemId, + strength: double.parse( + strengthController + .text)); + box = model.boxQuintity; - return; - } - }, - // validator: (value) { - // if (value.isEmpty && - // strengthController.text.length > - // 4) - // return TranslationBase.of(context) - // .emptyMessage; - // else - // return null; - // }, + return; + } + }, + // validator: (value) { + // if (value.isEmpty && + // strengthController.text.length > + // 4) + // return TranslationBase.of(context) + // .emptyMessage; + // else + // return null; + // }, + ), + ), + SizedBox( + width: 10.0, + ), + Container( + color: Colors.white, + width: MediaQuery.of(context) + .size + .width * + 0.350, + child: InkWell( + onTap: + model.itemMedicineListUnit != + null + ? () { + Helpers + .hideKeyboard( + context); + ListSelectDialog + dialog = + ListSelectDialog( + list: model + .itemMedicineListUnit, + attributeName: + 'description', + attributeValueId: + 'parameterCode', + okText: TranslationBase.of( + context) + .ok, + okFunction: + (selectedValue) { + setState( + () { + units = + selectedValue; + units['isDefault'] = + true; + }); + }, + ); + showDialog( + barrierDismissible: + false, + context: + context, + builder: + (BuildContext + context) { + return dialog; + }, + ); + } + : null, + child: TextField( + decoration: + textFieldSelectorDecoration( + 'UNIT', + units != null + ? units[ + 'description'] + : null, + true), + enabled: false), + ), + ), + ], + ), ), - ), - SizedBox( - width: 10.0, - ), - Container( - color: Colors.white, - width: MediaQuery.of(context) - .size - .width * - 0.350, - child: InkWell( - onTap: model.itemMedicineListUnit != - null - ? () { - Helpers.hideKeyboard( - context); - ListSelectDialog dialog = - ListSelectDialog( - list: model - .itemMedicineListUnit, - attributeName: - 'description', - attributeValueId: - 'parameterCode', - okText: - TranslationBase.of( - context) - .ok, - okFunction: - (selectedValue) { - setState(() { - units = selectedValue; - units['isDefault'] = - true; - }); - }, - ); - showDialog( - barrierDismissible: false, - context: context, - builder: (BuildContext - context) { - return dialog; - }, - ); - } - : null, - child: TextField( + SizedBox( + height: spaceBetweenTextFileds), + Container( + height: screenSize.height * 0.070, + color: Colors.white, + child: InkWell( + onTap: + model.itemMedicineListRoute != + null + ? () { + Helpers.hideKeyboard( + context); + ListSelectDialog + dialog = + ListSelectDialog( + list: model + .itemMedicineListRoute, + attributeName: + 'description', + attributeValueId: + 'parameterCode', + okText: + TranslationBase.of( + context) + .ok, + okFunction: + (selectedValue) { + setState(() { + route = + selectedValue; + route['isDefault'] = + true; + }); + if (route == + null) { + helpers.showErrorToast( + 'plase fill'); + } + }, + ); + showDialog( + barrierDismissible: + false, + context: context, + builder: + (BuildContext + context) { + return dialog; + }, + ); + } + : null, + child: TextField( decoration: textFieldSelectorDecoration( - 'UNIT', - units != null - ? units[ + TranslationBase.of( + context) + .route, + route != null + ? route[ 'description'] : null, true), - enabled: false), + enabled: false, + ), + ), ), - ), - ], - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - height: screenSize.height * 0.070, - color: Colors.white, - child: InkWell( - onTap: model.itemMedicineListRoute != null - ? () { - Helpers.hideKeyboard(context); - ListSelectDialog dialog = - ListSelectDialog( - list: - model.itemMedicineListRoute, - attributeName: 'description', - attributeValueId: - 'parameterCode', - okText: - TranslationBase.of(context) - .ok, - okFunction: (selectedValue) { - setState(() { - route = selectedValue; - route['isDefault'] = true; - }); - if (route == null) { - helpers.showErrorToast( - 'plase fill'); - } - }, - ); - showDialog( - barrierDismissible: false, - context: context, - builder: - (BuildContext context) { - return dialog; - }, - ); - } - : null, - child: TextField( - decoration: textFieldSelectorDecoration( - TranslationBase.of(context).route, - route != null - ? route['description'] - : null, - true), - enabled: false, - ), - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - height: screenSize.height * 0.070, - color: Colors.white, - child: InkWell( - onTap: model.itemMedicineList != null - ? () { - Helpers.hideKeyboard(context); - ListSelectDialog dialog = - ListSelectDialog( - list: model.itemMedicineList, - attributeName: 'description', - attributeValueId: - 'parameterCode', - okText: - TranslationBase.of(context) - .ok, - okFunction: (selectedValue) { - setState(() { - frequency = selectedValue; - frequency['isDefault'] = - true; - if (_selectedMedication != - null && - duration != null && - frequency != null && - strengthController - .text != - null) { - model.getBoxQuantity( - freq: frequency[ - 'parameterCode'], - duration: - duration['id'], - itemCode: - _selectedMedication - .itemId, - strength: double.parse( - strengthController - .text)); + SizedBox( + height: spaceBetweenTextFileds), + Container( + height: screenSize.height * 0.070, + color: Colors.white, + child: InkWell( + onTap: + model.itemMedicineList != null + ? () { + Helpers.hideKeyboard( + context); + ListSelectDialog + dialog = + ListSelectDialog( + list: model + .itemMedicineList, + attributeName: + 'description', + attributeValueId: + 'parameterCode', + okText: + TranslationBase.of( + context) + .ok, + okFunction: + (selectedValue) { + setState(() { + frequency = + selectedValue; + frequency[ + 'isDefault'] = + true; + if (_selectedMedication != null && + duration != + null && + frequency != + null && + strengthController + .text != + null) { + model.getBoxQuantity( + freq: frequency[ + 'parameterCode'], + duration: + duration[ + 'id'], + itemCode: + _selectedMedication + .itemId, + strength: + double.parse( + strengthController.text)); - return; - } - }); - }, - ); - showDialog( - barrierDismissible: false, - context: context, - builder: - (BuildContext context) { - return dialog; - }, - ); - } - : null, - child: TextField( - decoration: textFieldSelectorDecoration( - TranslationBase.of(context) - .frequency, - frequency != null - ? frequency['description'] - : null, - true), - enabled: false, - ), - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - height: screenSize.height * 0.070, - color: Colors.white, - child: InkWell( - onTap: model.medicationDoseTimeList != - null - ? () { - Helpers.hideKeyboard(context); - ListSelectDialog dialog = - ListSelectDialog( - list: model - .medicationDoseTimeList, - attributeName: 'nameEn', - attributeValueId: 'id', - okText: - TranslationBase.of(context) - .ok, - okFunction: (selectedValue) { - setState(() { - doseTime = selectedValue; - }); - }, - ); - showDialog( - barrierDismissible: false, - context: context, - builder: - (BuildContext context) { - return dialog; - }, - ); - } - : null, - child: TextField( - decoration: textFieldSelectorDecoration( - TranslationBase.of(context) - .doseTime, - doseTime != null - ? doseTime['nameEn'] - : null, - true), - enabled: false, - ), - ), - ), - SizedBox(height: spaceBetweenTextFileds), - if (model.patientAssessmentList.isNotEmpty) - Container( - height: screenSize.height * 0.070, - width: double.infinity, - color: Colors.white, - child: Row( - children: [ + return; + } + }); + }, + ); + showDialog( + barrierDismissible: + false, + context: context, + builder: + (BuildContext + context) { + return dialog; + }, + ); + } + : null, + child: TextField( + decoration: + textFieldSelectorDecoration( + TranslationBase.of( + context) + .frequency, + frequency != null + ? frequency[ + 'description'] + : null, + true), + enabled: false, + ), + ), + ), + SizedBox( + height: spaceBetweenTextFileds), Container( - width: MediaQuery.of(context) - .size - .width * - 0.29, + height: screenSize.height * 0.070, + color: Colors.white, child: InkWell( - onTap: indicationList != null + onTap: + model.medicationDoseTimeList != + null + ? () { + Helpers.hideKeyboard( + context); + ListSelectDialog + dialog = + ListSelectDialog( + list: model + .medicationDoseTimeList, + attributeName: + 'nameEn', + attributeValueId: + 'id', + okText: + TranslationBase.of( + context) + .ok, + okFunction: + (selectedValue) { + setState(() { + doseTime = + selectedValue; + }); + }, + ); + showDialog( + barrierDismissible: + false, + context: context, + builder: + (BuildContext + context) { + return dialog; + }, + ); + } + : null, + child: TextField( + decoration: + textFieldSelectorDecoration( + TranslationBase.of( + context) + .doseTime, + doseTime != null + ? doseTime['nameEn'] + : null, + true), + enabled: false, + ), + ), + ), + SizedBox( + height: spaceBetweenTextFileds), + if (model + .patientAssessmentList.isNotEmpty) + Container( + height: screenSize.height * 0.070, + width: double.infinity, + color: Colors.white, + child: Row( + children: [ + Container( + width: + MediaQuery.of(context) + .size + .width * + 0.29, + child: InkWell( + onTap: + indicationList != null + ? () { + Helpers.hideKeyboard( + context); + } + : null, + child: TextField( + decoration: + textFieldSelectorDecoration( + model + .patientAssessmentList[ + 0] + .icdCode10ID + .toString(), + indication != + null + ? indication[ + 'name'] + : null, + false), + enabled: true, + readOnly: true, + ), + ), + ), + Container( + width: + MediaQuery.of(context) + .size + .width * + 0.65, + color: Colors.white, + child: InkWell( + onTap: + indicationList != null + ? () { + Helpers.hideKeyboard( + context); + } + : null, + child: TextField( + maxLines: 5, + decoration: + textFieldSelectorDecoration( + model + .patientAssessmentList[ + 0] + .asciiDesc + .toString(), + indication != + null + ? indication[ + 'name'] + : null, + false), + enabled: true, + readOnly: true, + ), + ), + ), + ], + ), + ), + SizedBox( + height: spaceBetweenTextFileds), + Container( + height: screenSize.height * 0.070, + color: Colors.white, + child: InkWell( + onTap: () => selectDate( + context, widget.model), + child: TextField( + decoration: + textFieldSelectorDecoration( + TranslationBase.of( + context) + .date, + selectedDate != null + ? "${DateUtils.convertStringToDateFormat(selectedDate.toString(), "yyyy-MM-dd")}" + : null, + true, + suffixIcon: Icon( + Icons.calendar_today, + color: Colors.black, + )), + enabled: false, + ), + ), + ), + SizedBox( + height: spaceBetweenTextFileds), + Container( + height: screenSize.height * 0.070, + color: Colors.white, + child: InkWell( + onTap: + model.medicationDurationList != + null + ? () { + Helpers.hideKeyboard( + context); + ListSelectDialog + dialog = + ListSelectDialog( + list: model + .medicationDurationList, + attributeName: + 'nameEn', + attributeValueId: + 'id', + okText: + TranslationBase.of( + context) + .ok, + okFunction: + (selectedValue) { + setState(() { + duration = + selectedValue; + if (_selectedMedication != null && + duration != + null && + frequency != + null && + strengthController + .text != + null) { + model + .getBoxQuantity( + freq: frequency[ + 'parameterCode'], + duration: + duration[ + 'id'], + itemCode: + _selectedMedication + .itemId, + strength: double.parse( + strengthController + .text), + ); + box = model + .boxQuintity; + + return; + } + }); + }, + ); + showDialog( + barrierDismissible: + false, + context: context, + builder: + (BuildContext + context) { + return dialog; + }, + ); + } + : null, + child: TextField( + decoration: + textFieldSelectorDecoration( + TranslationBase.of( + context) + .duration, + duration != null + ? duration['nameEn'] + : null, + true), + enabled: false, + ), + ), + ), + SizedBox( + height: spaceBetweenTextFileds), + Container( + height: screenSize.height * 0.070, + color: Colors.white, + child: InkWell( + onTap: model.allMedicationList != + null ? () { Helpers.hideKeyboard( context); + ListSelectDialog dialog = + ListSelectDialog( + list: model + .allMedicationList, + attributeName: 'nameEn', + attributeValueId: 'id', + okText: + TranslationBase.of( + context) + .ok, + okFunction: + (selectedValue) { + setState(() { + duration = + selectedValue; + }); + }, + ); + showDialog( + barrierDismissible: + false, + context: context, + builder: (BuildContext + context) { + return dialog; + }, + ); } : null, child: TextField( decoration: textFieldSelectorDecoration( - model - .patientAssessmentList[ - 0] - .icdCode10ID - .toString(), - indication != null - ? indication['name'] + "UOM", + uom != null + ? uom : null, false), - enabled: true, + //enabled: false, readOnly: true, ), ), ), + SizedBox( + height: spaceBetweenTextFileds), Container( - width: MediaQuery.of(context) - .size - .width * - 0.65, + height: screenSize.height * 0.070, color: Colors.white, child: InkWell( - onTap: indicationList != null + onTap: model.allMedicationList != + null ? () { Helpers.hideKeyboard( context); + ListSelectDialog dialog = + ListSelectDialog( + list: model + .allMedicationList, + attributeName: 'nameEn', + attributeValueId: 'id', + okText: + TranslationBase.of( + context) + .ok, + okFunction: + (selectedValue) { + setState(() { + duration = + selectedValue; + }); + }, + ); + showDialog( + barrierDismissible: + false, + context: context, + builder: (BuildContext + context) { + return dialog; + }, + ); } : null, child: TextField( - maxLines: 5, decoration: textFieldSelectorDecoration( - model - .patientAssessmentList[ - 0] - .asciiDesc - .toString(), - indication != null - ? indication['name'] + "Box Quantity", + box != null + ? "Box Quantity: " + + model + .boxQuintity + .toString() : null, false), - enabled: true, + //enabled: false, readOnly: true, ), ), ), - ], - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - height: screenSize.height * 0.070, - color: Colors.white, - child: InkWell( - onTap: () => - selectDate(context, widget.model), - child: TextField( - decoration: textFieldSelectorDecoration( - TranslationBase.of(context).date, - selectedDate != null - ? "${DateUtils.convertStringToDateFormat(selectedDate.toString(), "yyyy-MM-dd")}" - : null, - true, - suffixIcon: Icon( - Icons.calendar_today, - color: Colors.black, - )), - enabled: false, - ), - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - height: screenSize.height * 0.070, - color: Colors.white, - child: InkWell( - onTap: model.medicationDurationList != - null - ? () { - Helpers.hideKeyboard(context); - ListSelectDialog dialog = - ListSelectDialog( - list: model - .medicationDurationList, - attributeName: 'nameEn', - attributeValueId: 'id', - okText: - TranslationBase.of(context) - .ok, - okFunction: (selectedValue) { - setState(() { - duration = selectedValue; - if (_selectedMedication != - null && - duration != null && - frequency != null && - strengthController - .text != - null) { - model.getBoxQuantity( - freq: frequency[ - 'parameterCode'], - duration: - duration['id'], - itemCode: - _selectedMedication - .itemId, - strength: double.parse( - strengthController - .text), - ); - box = model.boxQuintity; - + SizedBox( + height: spaceBetweenTextFileds), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.all( + Radius.circular(6.0)), + border: Border.all( + width: 1.0, + color: + HexColor("#CCCCCC"))), + child: TextFields( + maxLines: 6, + minLines: 4, + hintText: + TranslationBase.of(context) + .instruction, + controller: instructionController, + //keyboardType: TextInputType.number, + ), + ), + SizedBox( + height: spaceBetweenTextFileds), + Container( + margin: EdgeInsets.all( + SizeConfig.widthMultiplier * 5), + child: Wrap( + alignment: WrapAlignment.center, + children: [ + AppButton( + color: Color(0xff359846), + title: TranslationBase.of( + context) + .addMedication, + fontWeight: FontWeight.w600, + onPressed: () { + // formKey.currentState.save(); + // Navigator.pop(context); + // openDrugToDrug(); + if (route == null || + frequency == null || + doseTime == null || + duration == null || + selectedDate == null || + units == null) { + DrAppToastMsg.showErrorToast( + "Please Fill All Fields"); + return; + } + if (_selectedMedication + .isNarcotic == + true) { + DrAppToastMsg.showErrorToast( + "Narcotic medicine can only be prescribed from VIDA"); + Navigator.pop(context); return; } - }); - }, - ); - showDialog( - barrierDismissible: false, - context: context, - builder: - (BuildContext context) { - return dialog; - }, - ); - } - : null, - child: TextField( - decoration: textFieldSelectorDecoration( - TranslationBase.of(context) - .duration, - duration != null - ? duration['nameEn'] - : null, - true), - enabled: false, - ), - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - height: screenSize.height * 0.070, - color: Colors.white, - child: InkWell( - onTap: model.allMedicationList != null - ? () { - Helpers.hideKeyboard(context); - ListSelectDialog dialog = - ListSelectDialog( - list: model.allMedicationList, - attributeName: 'nameEn', - attributeValueId: 'id', - okText: - TranslationBase.of(context) - .ok, - okFunction: (selectedValue) { - setState(() { - duration = selectedValue; - }); - }, - ); - showDialog( - barrierDismissible: false, - context: context, - builder: - (BuildContext context) { - return dialog; - }, - ); - } - : null, - child: TextField( - decoration: textFieldSelectorDecoration( - "UOM", - uom != null ? uom : null, - false), - //enabled: false, - readOnly: true, - ), - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - height: screenSize.height * 0.070, - color: Colors.white, - child: InkWell( - onTap: model.allMedicationList != null - ? () { - Helpers.hideKeyboard(context); - ListSelectDialog dialog = - ListSelectDialog( - list: model.allMedicationList, - attributeName: 'nameEn', - attributeValueId: 'id', - okText: - TranslationBase.of(context) - .ok, - okFunction: (selectedValue) { - setState(() { - duration = selectedValue; - }); - }, - ); - showDialog( - barrierDismissible: false, - context: context, - builder: - (BuildContext context) { - return dialog; - }, - ); - } - : null, - child: TextField( - decoration: textFieldSelectorDecoration( - "Box Quantity", - box != null - ? "Box Quantity: " + - model.boxQuintity.toString() - : null, - false), - //enabled: false, - readOnly: true, - ), - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.all( - Radius.circular(6.0)), - border: Border.all( - width: 1.0, - color: HexColor("#CCCCCC"))), - child: TextFields( - maxLines: 6, - minLines: 4, - hintText: TranslationBase.of(context) - .instruction, - controller: instructionController, - //keyboardType: TextInputType.number, - ), - ), - SizedBox(height: spaceBetweenTextFileds), - Container( - margin: EdgeInsets.all( - SizeConfig.widthMultiplier * 5), - child: Wrap( - alignment: WrapAlignment.center, - children: [ - AppButton( - color: Color(0xff359846), - title: TranslationBase.of(context) - .addMedication, - fontWeight: FontWeight.w600, - onPressed: () { - // formKey.currentState.save(); - // Navigator.pop(context); - // openDrugToDrug(); - if (route == null || - frequency == null || - doseTime == null || - duration == null || - selectedDate == null || - units == null) { - DrAppToastMsg.showErrorToast( - "Please Fill All Fields"); - return; - } - if (_selectedMedication - .isNarcotic == - true) { - DrAppToastMsg.showErrorToast( - "Narcotic medicine can only be prescribed from VIDA"); - Navigator.pop(context); - return; - } - if (double.parse( - strengthController.text) > - 1000.0) { - DrAppToastMsg.showErrorToast( - "1000 is the MAX for the strength"); - return; - } - if (double.parse( - strengthController.text) < - 0.0) { - DrAppToastMsg.showErrorToast( - "strength can't be zero"); - return; - } + if (double.parse( + strengthController + .text) > + 1000.0) { + DrAppToastMsg.showErrorToast( + "1000 is the MAX for the strength"); + return; + } + if (double.parse( + strengthController + .text) < + 0.0) { + DrAppToastMsg.showErrorToast( + "strength can't be zero"); + return; + } - if (formKey.currentState - .validate()) { - Navigator.pop(context); - openDrugToDrug(model); - { - /*// var x = model - // .patientAssessmentList - // .map((value) => - // value.icdCode10ID) - // .toList() - // .join(','); - - postProcedure( - icdCode: model - .patientAssessmentList - .isNotEmpty - ? model - .patientAssessmentList[ - 0] - .icdCode10ID - .isEmpty - ? "test" - : model - .patientAssessmentList[ - 0] - .icdCode10ID - .toString() - : "TEST", - // icdCode: model + if (formKey.currentState + .validate()) { + Navigator.pop(context); + openDrugToDrug(model); + { + /*// var x = model // .patientAssessmentList - // .map((value) => value - // .icdCode10ID - // .trim()) + // .map((value) => + // value.icdCode10ID) // .toList() - // .join(' '), - dose: strengthController.text, - doseUnit: - units['parameterCode'] - .toString(), - patient: widget.patient, - doseTimeIn: - doseTime['id'].toString(), - model: widget.model, - duration: - duration['id'].toString(), - frequency: - frequency['parameterCode'] - .toString(), - route: route['parameterCode'] - .toString(), - drugId: _selectedMedication - .itemId - .toString(), - strength: - strengthController.text, - indication: - indicationController.text, - instruction: - instructionController - .text, - doseTime: selectedDate, - ); - */ - } - } + // .join(','); - { - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) => - // NewPrescriptionScreen()), - // ); - } - }, - ), - ], + postProcedure( + icdCode: model + .patientAssessmentList + .isNotEmpty + ? model + .patientAssessmentList[ + 0] + .icdCode10ID + .isEmpty + ? "test" + : model + .patientAssessmentList[ + 0] + .icdCode10ID + .toString() + : "TEST", + // icdCode: model + // .patientAssessmentList + // .map((value) => value + // .icdCode10ID + // .trim()) + // .toList() + // .join(' '), + dose: strengthController.text, + doseUnit: + units['parameterCode'] + .toString(), + patient: widget.patient, + doseTimeIn: + doseTime['id'].toString(), + model: widget.model, + duration: + duration['id'].toString(), + frequency: + frequency['parameterCode'] + .toString(), + route: route['parameterCode'] + .toString(), + drugId: _selectedMedication + .itemId + .toString(), + strength: + strengthController.text, + indication: + indicationController.text, + instruction: + instructionController + .text, + doseTime: selectedDate, + ); + */ + } + } + + { + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) => + // NewPrescriptionScreen()), + // ); + } + }, + ), + ], + ), + ), + ], + ), ), ), ], diff --git a/lib/screens/procedures/entity_list_checkbox_search_widget.dart b/lib/screens/procedures/entity_list_checkbox_search_widget.dart index 3426e4cd..4846c8c9 100644 --- a/lib/screens/procedures/entity_list_checkbox_search_widget.dart +++ b/lib/screens/procedures/entity_list_checkbox_search_widget.dart @@ -133,47 +133,56 @@ class _EntityListCheckboxSearchWidgetState child: Row( children: [ AppText( - TranslationBase.of(context) - .orderType), - Radio( - activeColor: Color(0xFFB9382C), - value: 0, - groupValue: selectedType, - onChanged: (value) { - historyInfo.type = - setSelectedType(value) - .toString(); - - historyInfo.type = - value.toString(); - }, + TranslationBase.of(context) + .orderType, + fontWeight: FontWeight.w700, ), - Text('routine'), - Radio( - activeColor: Color(0xFFB9382C), - groupValue: selectedType, - value: 1, - onChanged: (value) { - historyInfo.type = - setSelectedType(value) - .toString(); + Row( + children: [ + Radio( + activeColor: + Color(0xFFB9382C), + value: 0, + groupValue: selectedType, + onChanged: (value) { + historyInfo.type = + setSelectedType(value) + .toString(); + + historyInfo.type = + value.toString(); + }, + ), + Text('routine'), + Radio( + activeColor: + Color(0xFFB9382C), + groupValue: selectedType, + value: 1, + onChanged: (value) { + historyInfo.type = + setSelectedType(value) + .toString(); - historyInfo.type = - value.toString(); - }, + historyInfo.type = + value.toString(); + }, + ), + Text(TranslationBase.of( + context) + .urgent), + ], ), - Text(TranslationBase.of(context) - .urgent), ], ), ), ), SizedBox( - height: 15.0, + height: 2.0, ), Padding( padding: EdgeInsets.symmetric( - horizontal: 12), + horizontal: 12, vertical: 12.0), child: TextFields( hintText: TranslationBase.of(context) .remarks, From 0745d2d56e27f986906fc63ea4f7178b17d8843d Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 12 Apr 2021 15:20:34 +0300 Subject: [PATCH 04/16] update the design on the progress note (SOAP) --- .../profile/soap_update/update_plan_page.dart | 328 ++++++++---------- .../shared/expandable-widget-header-body.dart | 12 +- 2 files changed, 144 insertions(+), 196 deletions(-) diff --git a/lib/widgets/patients/profile/soap_update/update_plan_page.dart b/lib/widgets/patients/profile/soap_update/update_plan_page.dart index 5c69a8ae..de6f740d 100644 --- a/lib/widgets/patients/profile/soap_update/update_plan_page.dart +++ b/lib/widgets/patients/profile/soap_update/update_plan_page.dart @@ -4,6 +4,7 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/SOAP_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/SOAP/GetGetProgressNoteReqModel.dart'; import 'package:doctor_app_flutter/models/SOAP/GetGetProgressNoteResModel.dart'; import 'package:doctor_app_flutter/models/SOAP/post_progress_note_request_model.dart'; @@ -44,8 +45,7 @@ class UpdatePlanPage extends StatefulWidget { } class _UpdatePlanPageState extends State { - bool isProgressNoteExpand = false; - + bool isAddProgress = true; TextEditingController progressNoteController = TextEditingController(text: null); @@ -64,6 +64,17 @@ class _UpdatePlanPageState extends State { } TextEditingController typeController = TextEditingController(); + @override + void initState() { + super.initState(); + if(widget.patientProgressNote.planNote !=null ){ + setState(() { + isAddProgress = true; + }); + } + } + + @override Widget build(BuildContext context) { return BaseView( @@ -111,166 +122,97 @@ class _UpdatePlanPageState extends State { child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ - SizedBox( - height: 10, - ), - HeaderBodyExpandableNotifier( - headerWidget: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Row( - children: [ - Texts(TranslationBase - .of(context) - .progressNoteSOAP, - variant: isProgressNoteExpand ? "bodyText" : '', - bold: isProgressNoteExpand ? true : false, - color: Colors.black), - Icon( - FontAwesomeIcons.asterisk, - color: Colors.black, - size: 12, - ) - ], - ), - InkWell( - onTap: () { - setState(() { - isProgressNoteExpand = !isProgressNoteExpand; - }); + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.only(left: 5, right: 5), + child: Texts(TranslationBase.of(context).progressNote)), + if( isAddProgress) + Container( + margin: EdgeInsets.only(left: 10, right: 10, top: 15), + child: AppTextFieldCustom( + hintText: TranslationBase.of(context).progressNote, + controller: progressNoteController, + minLines: 2, + maxLines: 4, + inputType: TextInputType.multiline, + onChanged: (value){ + widget.patientProgressNote.planNote = value; }, - child: Icon(isProgressNoteExpand - ? Icons.keyboard_arrow_up - : Icons.keyboard_arrow_down)) - ], - ), - bodyWidget: Column(children: [ + ), + ), SizedBox( - height: 2, + height: 9, ), - Column( - children: [ - if(widget.patientProgressNote.planNote == null) - Container( - margin: - EdgeInsets.only(left: 10, right: 10, top: 15), - - child: AppTextFieldCustom( - hintText: TranslationBase.of(context).progressNote, - controller: progressNoteController, - minLines: 2, - maxLines: 4, - inputType: TextInputType.multiline, - onChanged: (value){ - // examination.remark = value; - }, - ), - ), - SizedBox( - height: 20, - ), - if ( widget.patientProgressNote.planNote != null) - Container( - margin: - EdgeInsets.only(left: 5, right: 5, top: 15), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, + if ( widget.patientProgressNote.planNote != null && !isAddProgress) + Container( + margin: + EdgeInsets.only(left: 5, right: 5,), + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - - SizedBox( - height: 8, - ), Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - Row( - children: [ - Texts('Appointment No: '), - Texts(widget.patientProgressNote.appointmentNo.toString()), - - ], - ), - AppText( - widget.patientProgressNote.createdOn !=null?DateUtils.getDayMonthYearDateFormatted(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getDayMonthYearDateFormatted(DateTime.now()), - fontWeight: FontWeight - .bold, - fontSize: 16, - ) + Texts('Appointment No: ',fontSize: 12,), + Texts(widget.patientProgressNote.appointmentNo??'',fontWeight: FontWeight.w600,), ], ), - Row( - children: [ - Texts('Condition: '), - Texts(widget.patientProgressNote.mName.toString()), + Texts( + widget.patientProgressNote.createdOn !=null?DateUtils.getDayMonthYearDateFormatted(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getDayMonthYearDateFormatted(DateTime.now()), + fontWeight: FontWeight.w600, + fontSize: 14, + ) - ], - ), - if(widget.patientProgressNote.createdByName !=null) - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - AppText( - TranslationBase.of(context).createdBy, - fontWeight: FontWeight.bold, - fontSize: 16, - ), - AppText( - widget.patientProgressNote.createdByName??"", - fontSize: 10, - color: Colors.grey, - ), - ], - ), - if(widget.patientProgressNote.editedByName !=null) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ Row( - mainAxisAlignment: - MainAxisAlignment.start, children: [ - AppText( - TranslationBase.of(context).editedBy, - fontWeight: FontWeight.bold, - fontSize: 16, - ), - AppText( - widget.patientProgressNote.editedByName??"", - fontSize: 10, - color: Colors.grey, - ), + Texts('Condition: ',fontSize: 12,), + Texts(widget.patientProgressNote.mName??'',fontWeight: FontWeight.w600), ], ), - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - SizedBox( - height: 6, - ), - Padding( - padding: const EdgeInsets.all(0.0), - child: Container( - width: MediaQuery.of(context) - .size - .width * - 0.6, - child: Texts( - progressNoteController.text, - fontSize: 10, - color: Colors.grey, - ), - ), - ), - ], + Texts( + widget.patientProgressNote.createdOn !=null?DateUtils.getHour(DateTime.parse(widget.patientProgressNote.createdOn)):DateUtils.getHour(DateTime.now()), + fontWeight: FontWeight.w600, + fontSize: 14, + ) + ], + ), + SizedBox(height: 8,), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Expanded( + child: Texts( + progressNoteController.text+"asdasd sdakfjhg gfadsfg dashkfgasd hgd sfnbsd,fbnsdafbasdnzb", + fontSize: 10, + + ), ), + InkWell( + onTap: (){ + setState(() { + isAddProgress = true; + }); + }, + child: Icon(DoctorApp.edit,size: 18,)) ], ), - ) - ], - ) - ]), - isExpand: isProgressNoteExpand, + ], + ), + ) + ], ), ], @@ -281,56 +223,62 @@ class _UpdatePlanPageState extends State { ), bottomSheet: Container( width: double.maxFinite, - height: 70, - child: Container( - margin: EdgeInsets.all(6), - child: Column( - children: [ - - Row( - children: [ - Expanded( - child: AppButton( - title: 'Previous', - color: Colors.white38, - fontColor: Colors.black, - fontWeight: FontWeight.w700, - loading: model.state == ViewState.BusyLocal, - onPressed: () async { - setState(() { - widget.changePageViewIndex(2); - }); - }, + height: 90, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + margin: EdgeInsets.all(6), + child: Column( + children: [ + Row( + children: [ + Expanded( + child: AppButton( + title: 'Previous', + color: Colors.grey[300], + fontColor: Colors.black, + fontWeight: FontWeight.w400, + loading: model.state == ViewState.BusyLocal, + onPressed: () async { + setState(() { + widget.changePageViewIndex(2); + }); + }, + ), ), - ), - SizedBox(width: 5,), - Expanded( - child: AppButton( - title: TranslationBase.of(context).next, - fontWeight: FontWeight.w700, - loading: model.state == ViewState.BusyLocal, - disabled: progressNoteController.text.isEmpty, - onPressed: () async { + SizedBox(width: 5,), + Expanded( + child: AppButton( + title: isAddProgress? TranslationBase.of(context).next: "Finish", + fontWeight: FontWeight.w400, + loading: model.state == ViewState.BusyLocal, + color: Colors.red[700], + disabled: progressNoteController.text.isEmpty, + onPressed: () async { - if(widget.patientProgressNote.planNote.isEmpty) { - Map profile = await sharedPref.getObj(DOCTOR_PROFILE); - DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); - setState(() { - widget.patientProgressNote.createdByName = widget.patientProgressNote.createdByName ?? doctorProfile.doctorName; - widget.patientProgressNote.editedByName = doctorProfile.doctorName; - widget.patientProgressNote.createdOn = DateTime.now().toString(); - widget.patientProgressNote.planNote = progressNoteController.text; - }); + if(isAddProgress) { + Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); + setState(() { + widget.patientProgressNote.createdByName = widget.patientProgressNote.createdByName ?? doctorProfile.doctorName; + widget.patientProgressNote.editedByName = doctorProfile.doctorName; + widget.patientProgressNote.createdOn = DateTime.now().toString(); + widget.patientProgressNote.planNote = progressNoteController.text; + isAddProgress = !isAddProgress; + }); - } else - submitPlan(model); - }, + } else{ + var asd =""; + // submitPlan(model); + } + }, + ), ), - ), - ], - ), + ], + ), - ], + ], + ), ), ), ), diff --git a/lib/widgets/shared/expandable-widget-header-body.dart b/lib/widgets/shared/expandable-widget-header-body.dart index 7adef404..97930285 100644 --- a/lib/widgets/shared/expandable-widget-header-body.dart +++ b/lib/widgets/shared/expandable-widget-header-body.dart @@ -18,14 +18,14 @@ class HeaderBodyExpandableNotifier extends StatefulWidget { class _HeaderBodyExpandableNotifierState extends State { + + @override + void initState() { + super.initState(); + + } @override Widget build(BuildContext context) { - setState(() { - if (widget.isExpand == true) { - widget.expandFlag = widget.isExpand; - widget.controller.expanded = true; - } - }); return ExpandableNotifier( child: Padding( From ab20be2ea17b60b0e0ae4a7521c8f63685b3b18e Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Mon, 12 Apr 2021 15:36:24 +0300 Subject: [PATCH 05/16] insurance aprovals changes --- lib/widgets/shared/doctor_card_insurance.dart | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/widgets/shared/doctor_card_insurance.dart b/lib/widgets/shared/doctor_card_insurance.dart index 42b001b3..6b144f53 100644 --- a/lib/widgets/shared/doctor_card_insurance.dart +++ b/lib/widgets/shared/doctor_card_insurance.dart @@ -1,4 +1,5 @@ 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/widgets/patients/profile/large_avatar.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/cupertino.dart'; @@ -89,7 +90,7 @@ class DoctorCardInsurance extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(5.0), child: Texts( - '$patientOut', + '$patientOut'.replaceAll(" ", ""), color: Colors.white, fontSize: 13.0, ), @@ -102,7 +103,7 @@ class DoctorCardInsurance extends StatelessWidget { Expanded( child: Texts( doctorName, - bold: true, + fontWeight: FontWeight.w700, )), ], ), @@ -153,11 +154,13 @@ class DoctorCardInsurance extends StatelessWidget { children: [ Texts( 'Clinic: ', - color: Colors.grey[500], + //fontWeight: FontWeight.w600, + //color: Colors.grey[500], ), Expanded( child: Texts( clinic, + fontWeight: FontWeight.w700, ), ) ], @@ -167,19 +170,24 @@ class DoctorCardInsurance extends StatelessWidget { children: [ Texts( 'Approval No: ', - color: Colors.grey[500], + //color: Colors.grey[500], ), Texts( branch, + fontWeight: FontWeight.w700, ) ], ) ]), ), ), - Icon( - EvaIcons.eye, - size: 38.0, + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 15.0), + child: Icon( + DoctorApp.view, + size: 22.0, + ), ) ], ), From d77bd1945039ce880a17d13edb45c5f325274c08 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Mon, 12 Apr 2021 16:02:57 +0300 Subject: [PATCH 06/16] login screen updated --- lib/widgets/auth/login_form.dart | 35 +++++++----- lib/widgets/auth/verification_methods.dart | 53 +++++++++++-------- lib/widgets/otp/sms-popup.dart | 23 ++++---- .../profile/profile-welcome-widget.dart | 2 +- 4 files changed, 67 insertions(+), 46 deletions(-) diff --git a/lib/widgets/auth/login_form.dart b/lib/widgets/auth/login_form.dart index c59c01d9..b4062853 100644 --- a/lib/widgets/auth/login_form.dart +++ b/lib/widgets/auth/login_form.dart @@ -79,7 +79,7 @@ class _LoginFormState extends State { child: AppText( TranslationBase.of(context).enterCredentials, fontSize: 18, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.bold, ), padding: EdgeInsets.only(top: 10, bottom: 10)), Container( @@ -97,7 +97,8 @@ class _LoginFormState extends State { padding: EdgeInsets.only(left: 10, top: 10), child: AppText( TranslationBase.of(context).enterId, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w800, + fontSize: 14, )), AppTextFormField( labelText: '', @@ -144,7 +145,8 @@ class _LoginFormState extends State { padding: EdgeInsets.only(left: 10, top: 10), child: AppText( TranslationBase.of(context).enterPassword, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w800, + fontSize: 14, )), AppTextFormField( focusNode: focusPass, @@ -198,6 +200,7 @@ class _LoginFormState extends State { focusNode: focusProject, controller: projectIdController, borderColor: Colors.white, + suffixIcon: Icons.arrow_drop_down, onTap: () { helpers.showCupertinoPicker( context, @@ -234,19 +237,27 @@ class _LoginFormState extends State { padding: EdgeInsets.only(left: 10, top: 10), child: AppText( TranslationBase.of(context).selectYourProject, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w800, + fontSize: 14, )), AppTextFormField( - readOnly: true, borderColor: Colors.white - // decoration: buildInputDecoration( - // context, - // TranslationBase.of(context) - // .pleaseEnterYourProject, - // 'assets/images/password_icon.png') + readOnly: true, borderColor: Colors.white, + prefix: IconButton( + icon: Icon(Icons.arrow_drop_down), + iconSize: 30, + padding: EdgeInsets.only(bottom: 30), + ), - ) + // decoration: buildInputDecoration( + // context, + // TranslationBase.of(context) + // .pleaseEnterYourProject, + // 'assets/images/password_icon.png') + ) ])), - buildSizedBox(), + SizedBox( + height: 100, + ), Row( children: [ diff --git a/lib/widgets/auth/verification_methods.dart b/lib/widgets/auth/verification_methods.dart index cbd2e730..f64221b8 100644 --- a/lib/widgets/auth/verification_methods.dart +++ b/lib/widgets/auth/verification_methods.dart @@ -155,7 +155,7 @@ class _VerificationMethodsState extends State { child: Row( children: [ Flexible( - flex: 4, + flex: 3, child: ListTile( title: Text( TranslationBase.of( @@ -164,15 +164,17 @@ class _VerificationMethodsState extends State { overflow: TextOverflow .ellipsis, style: TextStyle( - fontFamily: 'Poppins', - fontWeight: - FontWeight.w600, - ), + fontFamily: + 'Poppins', + fontWeight: + FontWeight.w800, + fontSize: 14), ), subtitle: AppText( getType( user.logInTypeID, context), + fontSize: 14, ) // Text( // user.editedOn != null @@ -208,6 +210,9 @@ class _VerificationMethodsState extends State { : '--', textAlign: TextAlign.right, + fontSize: 14, + fontWeight: + FontWeight.w800, ), subtitle: AppText( user.editedOn != null @@ -223,6 +228,7 @@ class _VerificationMethodsState extends State { : '--', textAlign: TextAlign.right, + fontSize: 14, ), )) ], @@ -487,8 +493,8 @@ class _VerificationMethodsState extends State { children: [ Image.asset( 'assets/images/verify-whtsapp.png', - height: SizeConfig.imageSizeMultiplier * 13, - width: SizeConfig.imageSizeMultiplier * 16, + height: 60, + width: 60, ), ], ), @@ -497,7 +503,8 @@ class _VerificationMethodsState extends State { ), AppText( TranslationBase.of(context).verifyWhatsApp, - fontSize: SizeConfig.textMultiplier * 2.2, + fontSize: 14, + fontWeight: FontWeight.w600, ) ], ), @@ -520,8 +527,8 @@ class _VerificationMethodsState extends State { children: [ Image.asset( 'assets/images/verify-sms.png', - height: SizeConfig.imageSizeMultiplier * 13, - width: SizeConfig.imageSizeMultiplier * 16, + height: 60, + width: 60, ), projectsProvider.isArabic ? SizedBox( @@ -532,9 +539,8 @@ class _VerificationMethodsState extends State { ), AppText( TranslationBase.of(context).verifySMS, - fontSize: projectsProvider.isArabic - ? SizeConfig.textMultiplier * 1.8 - : SizeConfig.textMultiplier * 2.2, + fontSize: 14, + fontWeight: FontWeight.w600, ) ], ), @@ -560,15 +566,16 @@ class _VerificationMethodsState extends State { children: [ Image.asset( 'assets/images/verification_fingerprint_icon.png', - height: SizeConfig.imageSizeMultiplier * 13, - width: SizeConfig.imageSizeMultiplier * 16, + height: 60, + width: 60, ), SizedBox( height: 20, ), AppText( TranslationBase.of(context).verifyFingerprint, - fontSize: SizeConfig.textMultiplier * 2.2, + fontSize: 14, + fontWeight: FontWeight.w600, ) ], ), @@ -602,15 +609,16 @@ class _VerificationMethodsState extends State { children: [ Image.asset( 'assets/images/verification_faceid_icon.png', - height: SizeConfig.imageSizeMultiplier * 13, - width: SizeConfig.imageSizeMultiplier * 16, + height: 60, + width: 60, ), SizedBox( height: 20, ), AppText( TranslationBase.of(context).verifyFaceID, - fontSize: SizeConfig.textMultiplier * 2.2, + fontSize: 14, + fontWeight: FontWeight.w600, ) ], ), @@ -640,8 +648,8 @@ class _VerificationMethodsState extends State { children: [ Image.asset( 'assets/images/login/more_icon.png', - height: SizeConfig.imageSizeMultiplier * 13, - width: SizeConfig.imageSizeMultiplier * 16, + height: 60, + width: 60, ), projectsProvider.isArabic ? SizedBox( @@ -652,7 +660,8 @@ class _VerificationMethodsState extends State { ), AppText( TranslationBase.of(context).moreVerification, - fontSize: SizeConfig.textMultiplier * 2.2, + fontSize: 14, + fontWeight: FontWeight.w600, // textAlign: TextAlign.center, ) ], diff --git a/lib/widgets/otp/sms-popup.dart b/lib/widgets/otp/sms-popup.dart index 9cdda71b..a79fcdff 100644 --- a/lib/widgets/otp/sms-popup.dart +++ b/lib/widgets/otp/sms-popup.dart @@ -122,7 +122,7 @@ class SMSOTP { child: Directionality( textDirection: TextDirection.ltr, child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Container( width: SizeConfig.realScreenWidth * 0.15, @@ -233,22 +233,23 @@ class SMSOTP { )), ), ), - Padding( - padding: EdgeInsets.only(top: 10), - child: Row(children: [ - Expanded( - child: AppText( - TranslationBase.of(context).validationMessage + ' ', - fontWeight: FontWeight.w600, - ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context).validationMessage + ' ', + fontWeight: FontWeight.w600, + fontSize: 14, ), AppText( displayTime, color: Colors.red, - textAlign: TextAlign.center, + textAlign: TextAlign.start, fontWeight: FontWeight.bold, + fontSize: 14, ) - ])) + ]) ], ))), ); diff --git a/lib/widgets/patients/profile/profile-welcome-widget.dart b/lib/widgets/patients/profile/profile-welcome-widget.dart index 72f06fb1..d691446e 100644 --- a/lib/widgets/patients/profile/profile-welcome-widget.dart +++ b/lib/widgets/patients/profile/profile-welcome-widget.dart @@ -57,7 +57,7 @@ class ProfileWelcomeWidget extends StatelessWidget { CircleAvatar( // radius: (52) child: ClipRRect( - borderRadius: BorderRadius.circular(10), + borderRadius: BorderRadius.circular(20), child: Image.network( authProvider.doctorProfile.doctorImageURL, fit: BoxFit.fill, From 3a734f4718eb38fe2c6d2d13ba64bea977d3aafe Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 12 Apr 2021 16:21:58 +0300 Subject: [PATCH 07/16] finish the new design on the progress note (SOAP) --- .../profile/soap_update/update_plan_page.dart | 16 +++++++++------- .../profile/soap_update/update_soap_index.dart | 8 ++++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/widgets/patients/profile/soap_update/update_plan_page.dart b/lib/widgets/patients/profile/soap_update/update_plan_page.dart index de6f740d..e965d482 100644 --- a/lib/widgets/patients/profile/soap_update/update_plan_page.dart +++ b/lib/widgets/patients/profile/soap_update/update_plan_page.dart @@ -62,14 +62,13 @@ class _UpdatePlanPageState extends State { )), ); } - TextEditingController typeController = TextEditingController(); @override void initState() { super.initState(); if(widget.patientProgressNote.planNote !=null ){ setState(() { - isAddProgress = true; + isAddProgress = false; }); } } @@ -94,7 +93,9 @@ class _UpdatePlanPageState extends State { widget.patientProgressNote.createdOn = model.patientProgressNoteList[0].createdOn; widget.patientProgressNote.editedOn = model.patientProgressNoteList[0].editedOn; widget.patientProgressNote.editedByName = model.patientProgressNoteList[0].editedByName; - + setState(() { + isAddProgress = false; + }); } widget.changeLoadingState(false); }, @@ -195,7 +196,7 @@ class _UpdatePlanPageState extends State { children: [ Expanded( child: Texts( - progressNoteController.text+"asdasd sdakfjhg gfadsfg dashkfgasd hgd sfnbsd,fbnsdafbasdnzb", + progressNoteController.text, fontSize: 10, ), @@ -204,6 +205,7 @@ class _UpdatePlanPageState extends State { onTap: (){ setState(() { isAddProgress = true; + widget.changePageViewIndex(3,isChangeState:false); }); }, child: Icon(DoctorApp.edit,size: 18,)) @@ -266,10 +268,10 @@ class _UpdatePlanPageState extends State { widget.patientProgressNote.planNote = progressNoteController.text; isAddProgress = !isAddProgress; }); + submitPlan(model); } else{ - var asd =""; - // submitPlan(model); + Navigator.of(context).pop(); } }, ), @@ -309,7 +311,7 @@ class _UpdatePlanPageState extends State { if (model.state == ViewState.ErrorLocal) { helpers.showErrorToast(model.error); } else { - Navigator.of(context).pop(); + widget.changePageViewIndex(4,isChangeState:false); } } else { helpers.showErrorToast(TranslationBase.of(context).progressNoteErrorMsg); diff --git a/lib/widgets/patients/profile/soap_update/update_soap_index.dart b/lib/widgets/patients/profile/soap_update/update_soap_index.dart index 0c69d71d..fa4631aa 100644 --- a/lib/widgets/patients/profile/soap_update/update_soap_index.dart +++ b/lib/widgets/patients/profile/soap_update/update_soap_index.dart @@ -38,9 +38,13 @@ class _UpdateSoapIndexState extends State GetPatientProgressNoteResModel patientProgressNote = GetPatientProgressNoteResModel(); - changePageViewIndex(pageIndex) { - if (pageIndex != _currentIndex) changeLoadingState(true); + changePageViewIndex(pageIndex,{isChangeState = true}) { + if (pageIndex != _currentIndex && isChangeState) + changeLoadingState(true); _controller.jumpToPage(pageIndex); + setState(() { + _currentIndex = pageIndex; + }); } bool _isLoading = true; From 0dc6bbca34d2d0354f4c8b5891bc0999293dff30 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Mon, 12 Apr 2021 17:13:09 +0300 Subject: [PATCH 08/16] finish the new design on the progress note (SOAP) --- lib/screens/procedures/ProcedureCard.dart | 5 +++-- lib/screens/procedures/procedure_screen.dart | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/screens/procedures/ProcedureCard.dart b/lib/screens/procedures/ProcedureCard.dart index 1b51ba30..43be9b71 100644 --- a/lib/screens/procedures/ProcedureCard.dart +++ b/lib/screens/procedures/ProcedureCard.dart @@ -1,5 +1,6 @@ import 'package:doctor_app_flutter/core/model/procedure/get_ordered_procedure_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/util/date-utils.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart'; @@ -147,7 +148,7 @@ class ProcedureCard extends StatelessWidget { color: Colors.grey, ), Texts( - entityList.clinicDescription.toString(), + entityList.clinicDescription??"", bold: true, fontSize: 12, ), @@ -163,7 +164,7 @@ class ProcedureCard extends StatelessWidget { if (entityList.categoryID == 2 || entityList.categoryID == 4) InkWell( - child: Icon(Icons.edit), + child: Icon(DoctorApp.edit), onTap: onTap, ) ], diff --git a/lib/screens/procedures/procedure_screen.dart b/lib/screens/procedures/procedure_screen.dart index e8fdd882..9e44df17 100644 --- a/lib/screens/procedures/procedure_screen.dart +++ b/lib/screens/procedures/procedure_screen.dart @@ -35,7 +35,6 @@ class ProcedureScreen extends StatelessWidget { baseViewModel: model, child: SingleChildScrollView( child: Container( - color: Colors.white, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ From 90ad95bd6385ebdb31242f14d8c0d77b8c2580a3 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Mon, 12 Apr 2021 17:57:30 +0300 Subject: [PATCH 09/16] login fixes --- lib/screens/auth/login_screen.dart | 2 +- lib/widgets/auth/login_form.dart | 447 +++++++++++++++-------------- lib/widgets/otp/sms-popup.dart | 69 +++-- 3 files changed, 265 insertions(+), 253 deletions(-) diff --git a/lib/screens/auth/login_screen.dart b/lib/screens/auth/login_screen.dart index 957dcc66..465ef71e 100644 --- a/lib/screens/auth/login_screen.dart +++ b/lib/screens/auth/login_screen.dart @@ -119,7 +119,7 @@ class _LoginsreenState extends State { children: [ AuthHeader(loginType.knownUser), SizedBox( - height: 60, + height: 40, ), LoginForm( changeLoadingStata: changeLoadingStata, diff --git a/lib/widgets/auth/login_form.dart b/lib/widgets/auth/login_form.dart index b4062853..487f6be9 100644 --- a/lib/widgets/auth/login_form.dart +++ b/lib/widgets/auth/login_form.dart @@ -69,231 +69,232 @@ class _LoginFormState extends State { return Form( key: loginFormKey, - child: Container( - width: SizeConfig.realScreenWidth * 0.90, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - buildSizedBox(), - Padding( - child: AppText( - TranslationBase.of(context).enterCredentials, - fontSize: 18, - fontWeight: FontWeight.bold, - ), - padding: EdgeInsets.only(top: 10, bottom: 10)), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(6.0)), - border: Border.all( - width: 1.0, - color: HexColor("#CCCCCC"), - ), - color: Colors.white), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(left: 10, top: 10), - child: AppText( - TranslationBase.of(context).enterId, - fontWeight: FontWeight.w800, - fontSize: 14, - )), - AppTextFormField( - labelText: '', - borderColor: Colors.white, - // keyboardType: TextInputType.number, - textInputAction: TextInputAction.next, - // decoration: buildInputDecoration( - // context, - // TranslationBase.of(context).enterId, - // 'assets/images/user_id_icon.png'), - validator: (value) { - if (value != null && value.isEmpty) { - return TranslationBase.of(context) - .pleaseEnterYourID; - } - return null; - }, - onSaved: (value) { - if (value != null) userInfo.userID = value.trim(); - }, - onChanged: (value) { - if (value != null) userInfo.userID = value.trim(); - }, - onFieldSubmitted: (_) { - focusPass.nextFocus(); - }, - // onEditingComplete: () {}, - // autofocus: false, - ) - ])), - buildSizedBox(), - Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(6.0)), - border: Border.all( - width: 1.0, - color: HexColor("#CCCCCC"), - ), - color: Colors.white), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(left: 10, top: 10), - child: AppText( - TranslationBase.of(context).enterPassword, - fontWeight: FontWeight.w800, - fontSize: 14, - )), - AppTextFormField( - focusNode: focusPass, - obscureText: true, - borderColor: Colors.white, - textInputAction: TextInputAction.next, - // decoration: buildInputDecoration( - // context, - // TranslationBase.of(context).enterPassword, - // 'assets/images/password_icon.png'), - validator: (value) { - if (value != null && value.isEmpty) { - return TranslationBase.of(context) - .pleaseEnterPassword; - } - return null; - }, - onSaved: (value) { - userInfo.password = value; - }, - onFieldSubmitted: (_) { - focusPass.nextFocus(); - helpers.showCupertinoPicker(context, projectsList, - 'facilityName', onSelectProject); - }, - onTap: () { - this.getProjects(userInfo.userID); - }, - ) - ])), - buildSizedBox(), - projectsList.length > 0 - ? Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(6.0)), - border: Border.all( - width: 1.0, - color: HexColor("#CCCCCC"), - ), - color: Colors.white), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(left: 10, top: 10), - child: AppText( - TranslationBase.of(context).selectYourProject, - fontWeight: FontWeight.w600, - )), - AppTextFormField( - focusNode: focusProject, - controller: projectIdController, - borderColor: Colors.white, - suffixIcon: Icons.arrow_drop_down, - onTap: () { - helpers.showCupertinoPicker( - context, - projectsList, - 'facilityName', - onSelectProject); - }, - // showCursor: false, - // //readOnly: true, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + width: SizeConfig.realScreenWidth * 0.90, + height: SizeConfig.realScreenHeight * 0.65, + child: + Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + buildSizedBox(), + Padding( + child: AppText( + TranslationBase.of(context).enterCredentials, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + padding: EdgeInsets.only(top: 10, bottom: 10)), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(6.0)), + border: Border.all( + width: 1.0, + color: HexColor("#CCCCCC"), + ), + color: Colors.white), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(left: 10, top: 10), + child: AppText( + TranslationBase.of(context).enterId, + fontWeight: FontWeight.w800, + fontSize: 14, + )), + AppTextFormField( + labelText: '', + borderColor: Colors.white, + // keyboardType: TextInputType.number, + textInputAction: TextInputAction.next, + // decoration: buildInputDecoration( + // context, + // TranslationBase.of(context).enterId, + // 'assets/images/user_id_icon.png'), + validator: (value) { + if (value != null && value.isEmpty) { + return TranslationBase.of(context) + .pleaseEnterYourID; + } + return null; + }, + onSaved: (value) { + if (value != null) userInfo.userID = value.trim(); + }, + onChanged: (value) { + if (value != null) userInfo.userID = value.trim(); + }, + onFieldSubmitted: (_) { + focusPass.nextFocus(); + }, + // onEditingComplete: () {}, + // autofocus: false, + ) + ])), + buildSizedBox(), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(6.0)), + border: Border.all( + width: 1.0, + color: HexColor("#CCCCCC"), + ), + color: Colors.white), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(left: 10, top: 10), + child: AppText( + TranslationBase.of(context).enterPassword, + fontWeight: FontWeight.w800, + fontSize: 14, + )), + AppTextFormField( + focusNode: focusPass, + obscureText: true, + borderColor: Colors.white, + textInputAction: TextInputAction.next, + // decoration: buildInputDecoration( + // context, + // TranslationBase.of(context).enterPassword, + // 'assets/images/password_icon.png'), + validator: (value) { + if (value != null && value.isEmpty) { + return TranslationBase.of(context) + .pleaseEnterPassword; + } + return null; + }, + onSaved: (value) { + userInfo.password = value; + }, + onFieldSubmitted: (_) { + focusPass.nextFocus(); + helpers.showCupertinoPicker(context, projectsList, + 'facilityName', onSelectProject); + }, + onTap: () { + this.getProjects(userInfo.userID); + }, + ) + ])), + buildSizedBox(), + projectsList.length > 0 + ? Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(6.0)), + border: Border.all( + width: 1.0, + color: HexColor("#CCCCCC"), + ), + color: Colors.white), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(left: 10, top: 10), + child: AppText( + TranslationBase.of(context).selectYourProject, + fontWeight: FontWeight.w600, + )), + AppTextFormField( + focusNode: focusProject, + controller: projectIdController, + borderColor: Colors.white, + suffixIcon: Icons.arrow_drop_down, + onTap: () { + helpers.showCupertinoPicker( + context, + projectsList, + 'facilityName', + onSelectProject); + }, + // showCursor: false, + // //readOnly: true, + // decoration: buildInputDecoration( + // context, + // TranslationBase.of(context).selectYourProject, + // 'assets/images/password_icon.png'), + validator: (value) { + if (value != null && value.isEmpty) { + return TranslationBase.of(context) + .pleaseEnterYourProject; + } + return null; + }) + ])) + : Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(6.0)), + border: Border.all( + width: 1.0, + color: HexColor("#CCCCCC"), + ), + color: Colors.white), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(left: 10, top: 10), + child: AppText( + TranslationBase.of(context).selectYourProject, + fontWeight: FontWeight.w800, + fontSize: 14, + )), + AppTextFormField( + readOnly: true, borderColor: Colors.white, + prefix: IconButton( + icon: Icon(Icons.arrow_drop_down), + iconSize: 30, + padding: EdgeInsets.only(bottom: 30), + ), + // decoration: buildInputDecoration( // context, - // TranslationBase.of(context).selectYourProject, - // 'assets/images/password_icon.png'), - validator: (value) { - if (value != null && value.isEmpty) { - return TranslationBase.of(context) - .pleaseEnterYourProject; - } - return null; - }) - ])) - : Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(6.0)), - border: Border.all( - width: 1.0, - color: HexColor("#CCCCCC"), - ), - color: Colors.white), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.only(left: 10, top: 10), - child: AppText( - TranslationBase.of(context).selectYourProject, - fontWeight: FontWeight.w800, - fontSize: 14, - )), - AppTextFormField( - readOnly: true, borderColor: Colors.white, - prefix: IconButton( - icon: Icon(Icons.arrow_drop_down), - iconSize: 30, - padding: EdgeInsets.only(bottom: 30), - ), - - // decoration: buildInputDecoration( - // context, - // TranslationBase.of(context) - // .pleaseEnterYourProject, - // 'assets/images/password_icon.png') - ) - ])), - SizedBox( - height: 100, - ), - - Row( - children: [ - Expanded( - child: Button( - title: TranslationBase.of(context).login, - color: Colors.red[700], - onTap: () { - login(context, authProv, widget.changeLoadingStata); - }, - )), - ], - ) - // Row( - // mainAxisAlignment: MainAxisAlignment.end, - // children: [ - // RaisedButton( - // onPressed: () { - // login(context, authProv, widget.changeLoadingStata); - // }, - // textColor: Colors.white, - // elevation: 0.0, - // padding: const EdgeInsets.all(0.0), - // shape: RoundedRectangleBorder( - // borderRadius: BorderRadius.circular(10), - // side: BorderSide(width: 0.5, color: HexColor('#CCCCCC'))), - // child: Container( - // padding: const EdgeInsets.all(10.0), - // height: 50, - // width: SizeConfig.realScreenWidth * 0.35, - // child: ), - // ) - // ], - // ), - ], - ), + // TranslationBase.of(context) + // .pleaseEnterYourProject, + // 'assets/images/password_icon.png') + ) + ])), + ]), + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Expanded( + child: Button( + title: TranslationBase.of(context).login, + color: HexColor('#D02127'), + onTap: () { + login(context, authProv, widget.changeLoadingStata); + }, + )), + ], + ) + // Row( + // mainAxisAlignment: MainAxisAlignment.end, + // children: [ + // RaisedButton( + // onPressed: () { + // login(context, authProv, widget.changeLoadingStata); + // }, + // textColor: Colors.white, + // elevation: 0.0, + // padding: const EdgeInsets.all(0.0), + // shape: RoundedRectangleBorder( + // borderRadius: BorderRadius.circular(10), + // side: BorderSide(width: 0.5, color: HexColor('#CCCCCC'))), + // child: Container( + // padding: const EdgeInsets.all(10.0), + // height: 50, + // width: SizeConfig.realScreenWidth * 0.35, + // child: ), + // ) + // ], + // ), + ], ), ); } diff --git a/lib/widgets/otp/sms-popup.dart b/lib/widgets/otp/sms-popup.dart index a79fcdff..b60ebeb1 100644 --- a/lib/widgets/otp/sms-popup.dart +++ b/lib/widgets/otp/sms-popup.dart @@ -60,20 +60,8 @@ class SMSOTP { builder: (context) { projectProvider = Provider.of(context); return AlertDialog( - contentPadding: EdgeInsets.fromLTRB(24.0, 20.0, 0.0, 24.0), - title: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - IconButton( - icon: Icon(Icons.close), - onPressed: () { - this.isClosed = true; - Navigator.pop(context); - this.onFailure(); - }, - ) - ], - ), + contentPadding: EdgeInsets.fromLTRB(24.0, 0.0, 0.0, 24.0), + // shape: RoundedRectangleBorder( // borderRadius: BorderRadius.all(Radius.circular(10.0))), content: StatefulBuilder(builder: (context, setState) { @@ -89,21 +77,44 @@ class SMSOTP { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - type == 1 - ? Padding( - child: Icon( - DoctorApp.verify_sms_1, - size: 40, - ), - padding: EdgeInsets.only(bottom: 20), - ) - : Padding( - child: Icon( - DoctorApp.verify_whtsapp, - size: 40, - ), - padding: EdgeInsets.only(bottom: 20), - ), + Padding( + padding: EdgeInsets.all(10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + type == 1 + ? Padding( + child: Icon( + DoctorApp.verify_sms_1, + size: 40, + ), + padding: EdgeInsets.only(bottom: 20), + ) + : Padding( + child: Icon( + DoctorApp.verify_whtsapp, + size: 40, + ), + padding: EdgeInsets.only(bottom: 20), + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Padding( + padding: EdgeInsets.only( + left: 10, right: 10, bottom: 20), + child: IconButton( + icon: Icon(Icons.close), + iconSize: 40, + onPressed: () { + this.isClosed = true; + Navigator.pop(context); + this.onFailure(); + }, + )) + ], + ) + ])), Padding( padding: EdgeInsets.only(top: 5), child: AppText( From 0128144f83b8153efe77cd0cdd5bd9dacbc6681a Mon Sep 17 00:00:00 2001 From: mosazaid Date: Mon, 12 Apr 2021 18:39:35 +0300 Subject: [PATCH 10/16] working onm referral card and update on ucaf design --- lib/config/localized_values.dart | 4 +- .../profile/UCAF/UCAF-detail-screen.dart | 124 ++++++---- .../profile/UCAF/UCAF-input-screen.dart | 12 +- .../profile/UCAF/page-stepper-widget.dart | 6 +- .../referral/patient_referral_screen.dart | 6 +- .../patient-referral-item-widget.dart | 231 ++++++++++-------- 6 files changed, 223 insertions(+), 160 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 194ee2af..21dae61a 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -43,7 +43,7 @@ const Map> localizedValues = { 'notArrived': {'en': 'Not Arrived', 'ar': 'لم يصل'}, 'radiology': {'en': 'Radiology', 'ar': 'الأشعة'}, 'service': {'en': 'Service', 'ar': 'خدمة'}, - 'referral': {'en': 'Referral', 'ar': 'االإحالة'}, + 'referral': {'en': 'Referral', 'ar': 'الإحالة'}, 'inPatient': {'en': 'In Patient', 'ar': 'المريض الداخلي'}, 'operations': {'en': 'Operations', 'ar': 'عمليات'}, 'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'}, @@ -51,7 +51,7 @@ const Map> localizedValues = { 'myReferralPatient': {'en': 'My Referral Patient', 'ar': 'مرضى الاحالة'}, 'referPatient': {'en': 'Referral Patient', 'ar': 'إحالة مريض'}, 'myReferral': {'en': 'My Referral', 'ar': 'إحالة'}, - 'myReferredPatient': {'en': 'My Referred Patient', 'ar': 'مرضاي المحالين'}, + 'myReferredPatient': {'en': 'Referred', 'ar': 'المحالين'}, 'referredPatient': {'en': 'Referred Patient', 'ar': 'المرضى المحالين'}, 'referredOn': {'en': 'referred On : ', 'ar': ' : تمت الإحالة في'}, 'firstName': {'en': 'First Name', 'ar': 'الاسم الاول'}, diff --git a/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart b/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart index 99948bed..ec7a7355 100644 --- a/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart +++ b/lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart @@ -8,10 +8,12 @@ import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart'; import 'package:doctor_app_flutter/models/SOAP/order-procedure.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; +import 'package:doctor_app_flutter/screens/patients/profile/UCAF/page-stepper-widget.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/PatientHeaderWidgetNoAvatar.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/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/borderedButton.dart'; @@ -45,6 +47,9 @@ class _UcafDetailScreenState extends State { }, builder: (_, model, w) => AppScaffold( baseViewModel: model, + isShowAppBar: true, + appBar: PatientProfileHeaderNewDesignAppBar( + patient, patientType, arrivalType), appBarTitle: TranslationBase.of(context).ucaf, body: Column( children: [ @@ -54,7 +59,32 @@ class _UcafDetailScreenState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - PatientHeaderWidgetNoAvatar(patient), + // PatientHeaderWidgetNoAvatar(patient), + Container( + margin: EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + "${TranslationBase.of(context).patient}", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.6, + fontWeight: FontWeight.w600, + ), + AppText( + "${TranslationBase.of(context).ucaf}", + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 3, + fontWeight: FontWeight.bold, + ) + ], + ), + ), + PageStepperWidget( + stepsCount: 2, + currentStepIndex: 2, + screenSize: screenSize, + ), SizedBox( height: 10, ), @@ -80,48 +110,60 @@ class _UcafDetailScreenState extends State { ), Container( margin: EdgeInsets.symmetric(vertical: 8, horizontal: 16), - child: BorderedButton( - TranslationBase.of(context).save, - hasBorder: true, - vPadding: 8, - hPadding: 8, - borderColor: HexColor("#B8382B"), - backgroundColor: HexColor("#B8382B"), - textColor: Colors.white, - fontSize: SizeConfig.textMultiplier * 2.0, - handler: () async { - await model.postUCAF(patient); - if (model.state == ViewState.Idle) { - DrAppToastMsg.showSuccesToast( - TranslationBase.of(context).postUcafSuccessMsg); - Navigator.of(context).popUntil((route) { - return route.settings.name == PATIENTS_PROFILE; - }); - } else { - DrAppToastMsg.showErrorToast(model.error); - } - }, - ), - ), - Container( - margin: EdgeInsets.only( - left: 16, right: 16, top: 0.0, bottom: 8), - child: BorderedButton( - TranslationBase.of(context).cancel, - hasBorder: true, - vPadding: 8, - hPadding: 8, - borderColor: Colors.white, - backgroundColor: Colors.white, - textColor: HexColor("#B8382B"), - fontSize: SizeConfig.textMultiplier * 2.2, - handler: () { - Navigator.of(context).popUntil((route) { - return route.settings.name == PATIENTS_PROFILE; - }); - }, + child: Row( + children: [ + Expanded( + child: Container( + child: BorderedButton( + TranslationBase.of(context).cancel, + hasBorder: true, + vPadding: 8, + hPadding: 8, + borderColor: Colors.white, + backgroundColor: Colors.white, + textColor: HexColor("#B8382B"), + fontSize: SizeConfig.textMultiplier * 2.2, + handler: () { + Navigator.of(context).popUntil((route) { + return route.settings.name == PATIENTS_PROFILE; + }); + }, + ), + ), + ), + SizedBox( + width: 8, + ), + Expanded( + child: Container( + child: BorderedButton( + TranslationBase.of(context).save, + hasBorder: true, + vPadding: 8, + hPadding: 8, + borderColor: HexColor("#B8382B"), + backgroundColor: HexColor("#B8382B"), + textColor: Colors.white, + fontSize: SizeConfig.textMultiplier * 2.0, + handler: () async { + await model.postUCAF(patient); + if (model.state == ViewState.Idle) { + DrAppToastMsg.showSuccesToast( + TranslationBase.of(context).postUcafSuccessMsg); + Navigator.of(context).popUntil((route) { + return route.settings.name == PATIENTS_PROFILE; + }); + } else { + DrAppToastMsg.showErrorToast(model.error); + } + }, + ), + ), + ), + ], ), ), + ], ), )); diff --git a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart index c2d0d5f4..95afd136 100644 --- a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart +++ b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart @@ -366,7 +366,8 @@ class _UCAFInputScreenState extends State { ), AppTextFieldCustom( height: screenSize.height * 0.1, - hintText: TranslationBase.of(context).specifyPossibleLineManagement, + hintText: TranslationBase.of(context) + .specifyPossibleLineManagement, dropDownText: "None", enabled: false, minLines: 4, @@ -385,7 +386,8 @@ class _UCAFInputScreenState extends State { ), AppTextFieldCustom( height: screenSize.height * 0.1, - hintText: TranslationBase.of(context).backAbdomen, + hintText: + TranslationBase.of(context).backAbdomen, dropDownText: "BackLNeck", enabled: false, ), @@ -403,7 +405,11 @@ class _UCAFInputScreenState extends State { color: HexColor("#D02127"), onPressed: () { Navigator.of(context).pushNamed(PATIENT_UCAF_DETAIL, - arguments: {'patient': patient}); + arguments: { + 'patient': patient, + 'patientType': patientType, + 'arrivalType': arrivalType + }); }, ), ), diff --git a/lib/screens/patients/profile/UCAF/page-stepper-widget.dart b/lib/screens/patients/profile/UCAF/page-stepper-widget.dart index 5e93f141..58bcbab0 100644 --- a/lib/screens/patients/profile/UCAF/page-stepper-widget.dart +++ b/lib/screens/patients/profile/UCAF/page-stepper-widget.dart @@ -13,7 +13,7 @@ class PageStepperWidget extends StatelessWidget { @override Widget build(BuildContext context) { - double dividerWidth = (screenSize.width / stepsCount) - (10 * stepsCount); + double dividerWidth = (screenSize.width / stepsCount) - (5 * stepsCount); return Container( margin: EdgeInsets.symmetric(vertical: 16.0, horizontal: 16.0), @@ -68,8 +68,8 @@ class StepWidget extends StatelessWidget { Container( padding: EdgeInsets.all(0.0), margin: EdgeInsets.symmetric(horizontal: 1), - width: 25, - height: 25, + width: 30, + height: 30, decoration: BoxDecoration( color: isInProgress ? Color(0xFFCC9B14) : Color(0xFFC9C9C9), shape: BoxShape.circle, diff --git a/lib/screens/patients/profile/referral/patient_referral_screen.dart b/lib/screens/patients/profile/referral/patient_referral_screen.dart index 16084342..1935bc46 100644 --- a/lib/screens/patients/profile/referral/patient_referral_screen.dart +++ b/lib/screens/patients/profile/referral/patient_referral_screen.dart @@ -44,12 +44,12 @@ class _PatientReferralScreen extends State child: Container( height: 60.0, // margin: EdgeInsets.only(top: 10.0), - width: MediaQuery.of(context).size.width * 0.92, // 0.9, + width: MediaQuery.of(context).size.width * 1, // 0.92, decoration: BoxDecoration( border: Border( bottom: BorderSide( color: Theme.of(context).dividerColor, - width: 0.9), //width: 0.7 + width: 1), //width: 0.7 ), color: Colors.white), child: Center( @@ -68,7 +68,7 @@ class _PatientReferralScreen extends State width: MediaQuery.of(context).size.width * 0.30, child: Center( child: - AppText(TranslationBase.of(context).myReferral), + AppText(TranslationBase.of(context).referral), ), ), Container( diff --git a/lib/widgets/patients/patient-referral-item-widget.dart b/lib/widgets/patients/patient-referral-item-widget.dart index 1ce84387..606dccde 100644 --- a/lib/widgets/patients/patient-referral-item-widget.dart +++ b/lib/widgets/patients/patient-referral-item-widget.dart @@ -282,48 +282,38 @@ class PatientReferralItemWidget extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 2.0 * SizeConfig.textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: referralStatus != null - ? referralStatus - : "", - style: TextStyle( - color: referralStatus != null - ? referralStatus == 'Pending' - ? Color(0xffc4aa54) - : referralStatus == 'Accepted' - ? Colors.green[700] - : Colors.red[700] - : Colors.grey[500], - fontWeight: FontWeight.w700, - fontFamily: 'Poppins', - fontSize: - 2.0 * SizeConfig.textMultiplier)), - ], - ), + AppText( + referralStatus != null ? referralStatus : "", + fontFamily: 'Poppins', + fontSize: 1.9 * SizeConfig.textMultiplier, + fontWeight: FontWeight.w700, + color: referralStatus != null + ? referralStatus == 'Pending' + ? Color(0xffc4aa54) + : referralStatus == 'Accepted' + ? Colors.green[700] + : Colors.red[700] + : Colors.grey[500], ), - //TODO :ask backend to return in the standard format AppText( referredOn, fontFamily: 'Poppins', fontWeight: FontWeight.w600, - fontSize: 2.1 * SizeConfig.textMultiplier, + fontSize: 2.0 * SizeConfig.textMultiplier, + color: Color(0XFF28353E), ) ], ), Row( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: AppText( patientInfo.patientName, - fontSize: SizeConfig.textMultiplier * 2.5, + fontSize: SizeConfig.textMultiplier * 2.2, fontWeight: FontWeight.bold, backGroundcolor: Colors.white, + color: Colors.black, fontFamily: 'Poppins', ), ), @@ -339,64 +329,68 @@ class PatientReferralItemWidget extends StatelessWidget { DoctorApp.female_1, color: Colors.pink, ), + SizedBox( + width: 4, + ), + AppText( + referredOn, + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontSize: 1.8 * SizeConfig.textMultiplier, + color: Color(0XFF575757), + ) ], ), - SizedBox( - width: 10, - ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - Column( - children: [ - RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 2.0 * SizeConfig.textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: TranslationBase.of(context) - .fileNumber, - style: TextStyle( - fontSize: 14, fontFamily: 'Poppins')), - new TextSpan( - text: patientInfo.patientID.toString(), - style: TextStyle( - fontWeight: FontWeight.w700, - fontFamily: 'Poppins', - fontSize: 15)), + Expanded( + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context).fileNumber, + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontSize: 1.7 * SizeConfig.textMultiplier, + color: Color(0XFF575757), + ), + AppText( + patientInfo.patientID.toString(), + fontFamily: 'Poppins', + fontWeight: FontWeight.w700, + fontSize: 1.8 * SizeConfig.textMultiplier, + color: Color(0XFF2E303A), + ), ], ), - ), - Container( - child: RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 2.0 * SizeConfig.textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: TranslationBase.of(context) - .referredFrom, - style: TextStyle( - fontSize: 14, - fontFamily: 'Poppins')), - new TextSpan( - text: isSameBranch - ? TranslationBase.of(context) - .sameBranch - : TranslationBase.of(context) - .otherBranch, - style: TextStyle( - fontWeight: FontWeight.w700, - fontFamily: 'Poppins', - fontSize: 15)), - ], - ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context).referredFrom, + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontSize: 1.7 * SizeConfig.textMultiplier, + color: Color(0XFF575757), + ), + AppText( + isSameBranch + ? TranslationBase.of(context).sameBranch + : TranslationBase.of(context) + .otherBranch, + fontFamily: 'Poppins', + fontWeight: FontWeight.w700, + fontSize: 1.8 * SizeConfig.textMultiplier, + color: Color(0XFF2E303A), + ), + ], ), - ), - ], + ], + ), ), Row( children: [ @@ -405,7 +399,8 @@ class PatientReferralItemWidget extends StatelessWidget { patient.nationality*/ "Saudi", fontWeight: FontWeight.bold, - fontSize: 12, + color: Color(0xFF2E303A), + fontSize: 1.4 * SizeConfig.textMultiplier, ), /* patient.nationality != null ? ClipRRect( @@ -434,48 +429,68 @@ class PatientReferralItemWidget extends StatelessWidget { ) ], ), - Container( - child: RichText( - text: new TextSpan( - style: new TextStyle( - fontSize: 2.0 * SizeConfig.textMultiplier, - color: Colors.black), - children: [ - new TextSpan( - text: - TranslationBase.of(context).remarks + " : ", - style: TextStyle( - fontSize: 14, fontFamily: 'Poppins')), - new TextSpan( - text: patientInfo.remarksFromSource, - style: TextStyle( - fontWeight: FontWeight.w700, - fontFamily: 'Poppins', - fontSize: 15)), - ], + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context).remarks + " : ", + fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontSize: 1.7 * SizeConfig.textMultiplier, + color: Color(0XFF575757), ), - ), + Expanded( + child: AppText( + patientInfo.remarksFromSource, + fontFamily: 'Poppins', + fontWeight: FontWeight.w700, + fontSize: 1.8 * SizeConfig.textMultiplier, + color: Color(0XFF2E303A), + ), + ), + ], ), Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - width: 30, + width: 2, height: 30, - margin: EdgeInsets.only( - left: - projectViewModel.isArabic ? 10 : 10 /*10:85*/, - right: - projectViewModel.isArabic ? 10 : 10 /*85:10*/, - top: 5), - decoration: BoxDecoration( + color: Color(0xFFD9D9D9), + + /* + decoration: BoxDecoration( shape: BoxShape.rectangle, border: Border( bottom: BorderSide( - color: Colors.grey[400], width: 2.5), + color: Color(0xFFD9D9D9), width: 2.5), left: BorderSide( - color: Colors.grey[400], width: 2.5), + color: Color(0xFFD9D9D9), width: 2.5), )), + */ + ), + Container( + margin: EdgeInsets.only( + left: 0, top: 20, right: 0, bottom: 0), + child: Icon( + Icons.arrow_forward, + color: Color(0xFFD9D9D9), + size: 30, + ), + ), + Container( + margin: EdgeInsets.only( + left: 0, top: 25, right: 0, bottom: 0), + padding: EdgeInsets.only(left: 4.0, right: 4.0), + child: Container( + width: 40, + height: 40, + child: Image.asset( + 'assets/images/female_avatar.png', + fit: BoxFit.cover, + ), + ), ), Expanded( flex: 4, From 8dca4768986eb66d03b3930a97c3d0bdea64b83d Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Mon, 12 Apr 2021 18:55:31 +0300 Subject: [PATCH 11/16] add lab & add radiology design update --- .../procedures/add-procedure-form.dart | 2 + lib/screens/procedures/add_lab_orders.dart | 43 +++++++-------- .../procedures/add_radiology_order.dart | 41 +++++++------- .../entity_list_checkbox_search_widget.dart | 54 ++++++++++++++----- 4 files changed, 80 insertions(+), 60 deletions(-) diff --git a/lib/screens/procedures/add-procedure-form.dart b/lib/screens/procedures/add-procedure-form.dart index 39aed026..31dabcd2 100644 --- a/lib/screens/procedures/add-procedure-form.dart +++ b/lib/screens/procedures/add-procedure-form.dart @@ -343,6 +343,8 @@ class _AddSelectedProcedureState extends State { AppButton( title: TranslationBase.of(context) .addSelectedProcedures, + color: Color(0xff359846), + fontWeight: FontWeight.w700, onPressed: () { //print(entityList.toString()); onPressed: diff --git a/lib/screens/procedures/add_lab_orders.dart b/lib/screens/procedures/add_lab_orders.dart index 93773c8f..d255308f 100644 --- a/lib/screens/procedures/add_lab_orders.dart +++ b/lib/screens/procedures/add_lab_orders.dart @@ -157,29 +157,24 @@ class _AddSelectedLabOrderState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( + Row( children: [ - Row( - children: [ - InkWell( - child: Icon( - Icons.close, - size: 24.0, - ), - onTap: () { - Navigator.pop(context); - }, - ), - ], + AppText( + 'New Lab Order', + fontWeight: FontWeight.w700, + fontSize: 20, ), - Row( - children: [ - AppText( - 'New Lab Order', - fontWeight: FontWeight.w700, - fontSize: 20, - ), - ], + SizedBox( + width: MediaQuery.of(context).size.width * 0.48, + ), + InkWell( + child: Icon( + Icons.close, + size: 28.0, + ), + onTap: () { + Navigator.pop(context); + }, ), ], ), @@ -261,8 +256,10 @@ class _AddSelectedLabOrderState extends State { alignment: WrapAlignment.center, children: [ AppButton( - title: TranslationBase.of(context) - .addSelectedProcedures, + title: + "Add Lab Order", //TranslationBase.of(context) + fontWeight: FontWeight.w700, + //.addSelectedProcedures, color: Color(0xff359846), onPressed: () { //print(entityList.toString()); diff --git a/lib/screens/procedures/add_radiology_order.dart b/lib/screens/procedures/add_radiology_order.dart index 9fc76dc4..2f74060e 100644 --- a/lib/screens/procedures/add_radiology_order.dart +++ b/lib/screens/procedures/add_radiology_order.dart @@ -157,29 +157,24 @@ class _AddSelectedRadiologyOrderState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( + Row( children: [ - Row( - children: [ - InkWell( - child: Icon( - Icons.close, - size: 24.0, - ), - onTap: () { - Navigator.pop(context); - }, - ), - ], + AppText( + 'New Radiology Order', + fontWeight: FontWeight.w700, + fontSize: 20, ), - Row( - children: [ - AppText( - 'New Radiology Order', - fontWeight: FontWeight.w700, - fontSize: 20, - ), - ], + SizedBox( + width: MediaQuery.of(context).size.width * 0.48, + ), + InkWell( + child: Icon( + Icons.close, + size: 28.0, + ), + onTap: () { + Navigator.pop(context); + }, ), ], ), @@ -261,9 +256,9 @@ class _AddSelectedRadiologyOrderState extends State { alignment: WrapAlignment.center, children: [ AppButton( - title: TranslationBase.of(context) - .addSelectedProcedures, + title: 'Add Radiology Order', color: Color(0xff359846), + fontWeight: FontWeight.w700, onPressed: () { //print(entityList.toString()); onPressed: diff --git a/lib/screens/procedures/entity_list_checkbox_search_widget.dart b/lib/screens/procedures/entity_list_checkbox_search_widget.dart index 4846c8c9..679739e2 100644 --- a/lib/screens/procedures/entity_list_checkbox_search_widget.dart +++ b/lib/screens/procedures/entity_list_checkbox_search_widget.dart @@ -74,16 +74,18 @@ class _EntityListCheckboxSearchWidgetState child: Container( margin: EdgeInsets.only(top: 15), decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), + borderRadius: BorderRadius.circular(8), color: Colors.white), child: ListView( children: [ TextFields( hintText: TranslationBase.of(context).searchProcedures, suffixIcon: EvaIcons.search, + suffixIconColor: Color(0xff2B353E), onChanged: (value) { filterSearchResults(value); }, + hasBorder: false, ), SizedBox( height: 15, @@ -99,7 +101,7 @@ class _EntityListCheckboxSearchWidgetState Checkbox( value: widget.isEntityListSelected( historyInfo), - activeColor: Colors.red[800], + activeColor: Color(0xffD02127), onChanged: (bool newValue) { setState(() { if (widget.isEntityListSelected( @@ -118,6 +120,7 @@ class _EntityListCheckboxSearchWidgetState horizontal: 10, vertical: 0), child: Texts( historyInfo.procedureName, + fontSize: 14.0, variant: "bodyText", bold: true, color: Color(0xff575757)), @@ -130,18 +133,32 @@ class _EntityListCheckboxSearchWidgetState child: Padding( padding: EdgeInsets.symmetric( horizontal: 12), - child: Row( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, children: [ - AppText( - TranslationBase.of(context) - .orderType, - fontWeight: FontWeight.w700, + Row( + children: [ + Padding( + padding: const EdgeInsets + .symmetric( + horizontal: 11), + child: AppText( + TranslationBase.of( + context) + .orderType, + fontWeight: + FontWeight.w700, + color: Color(0xff2B353E), + ), + ), + ], ), Row( children: [ Radio( activeColor: - Color(0xFFB9382C), + Color(0xFFD02127), value: 0, groupValue: selectedType, onChanged: (value) { @@ -153,10 +170,14 @@ class _EntityListCheckboxSearchWidgetState value.toString(); }, ), - Text('routine'), + AppText( + 'routine', + color: Color(0xff575757), + fontWeight: FontWeight.w600, + ), Radio( activeColor: - Color(0xFFB9382C), + Color(0xFFD02127), groupValue: selectedType, value: 1, onChanged: (value) { @@ -168,9 +189,12 @@ class _EntityListCheckboxSearchWidgetState value.toString(); }, ), - Text(TranslationBase.of( - context) - .urgent), + AppText( + TranslationBase.of(context) + .urgent, + color: Color(0xff575757), + fontWeight: FontWeight.w600, + ), ], ), ], @@ -192,11 +216,13 @@ class _EntityListCheckboxSearchWidgetState }, minLines: 3, maxLines: 5, + borderWidth: 0.5, + borderColor: Colors.grey[500], ), ), + DividerWithSpacesAround(), ], ), - DividerWithSpacesAround(), ], ); }).toList(), From fea6501b9e5256d9f60d0e9b42f713e1b2205d4a Mon Sep 17 00:00:00 2001 From: mosazaid Date: Tue, 13 Apr 2021 13:12:48 +0300 Subject: [PATCH 12/16] design fixes issues --- assets/images/patient/ic_ref_arrow_left.png | Bin 0 -> 453 bytes assets/images/patient/ic_ref_arrow_up.png | Bin 0 -> 453 bytes .../profile/UCAF/UCAF-input-screen.dart | 36 ++++--- .../profile/UCAF/page-stepper-widget.dart | 37 ++++--- .../admission-request-first-screen.dart | 6 +- .../referral/refer-patient-screen.dart | 17 +++- .../LineChartCurvedBloodPressure.dart | 6 +- .../patient-referral-item-widget.dart | 27 +---- lib/widgets/shared/app-textfield-custom.dart | 93 +++++++++--------- 9 files changed, 118 insertions(+), 104 deletions(-) create mode 100644 assets/images/patient/ic_ref_arrow_left.png create mode 100644 assets/images/patient/ic_ref_arrow_up.png diff --git a/assets/images/patient/ic_ref_arrow_left.png b/assets/images/patient/ic_ref_arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..09e05ab220a7f2c2f67191a18bd4abe139fe672d GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^l0dA$!3-oXI4PR|snr2KA+A9BKMd^OzyHjcGmjrX zzIgHC?c2AnUcGw#`gI`V&Ye5gu3fu%^CpCQMBarIq&lV>hozIOAL z-3O1HJay*k^*i?;J$?4-!^f}Re*FHYeWJP?Xa-}Fx4R4De(vn-#?TwMrGOwZJLmN^c_wVp1w>zbF7eXlz8%Fbrl+|+8uAGSF~ who@qrmq(NYcfwQwQ*+^ia@vp7gap_a7X6U^B5b^Y6X+fWPgg&ebxsLQ0K>cU-2eap literal 0 HcmV?d00001 diff --git a/assets/images/patient/ic_ref_arrow_up.png b/assets/images/patient/ic_ref_arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..8294cfed692ae722747c409c629116ab39d938ed GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E$!3-qRFWy-Uq*es@gt!9f|6s6x|Nh&zZ{NRv z|Jk!=7cX7}GA>=ZboJ_0px~`rx2|8m4rJW8aRW%+ym=ES0%QY8h#*7+NWvLFS%?B4 z2@!{r$RfyWhytLQaFxgmkw1Q>K)0Hg1o;IsFfp^Rb8vAB2nvZRscGw3+PHXl`})P_ zHuO%LHE-#vO){&D(b$K7RT6`>*J=50XG57?Zr+T^Ro}>D~i! zIy_w*Lp096J?|;sm>_cWq4S9dNvAfWG_5HQYyRiE{Yt!88y)>4|9r8yctxnp+0`dj zzL}^UyZ8F^nr#{@zdh@_ZL7SCwbGnzopr0KK3CJpcdz literal 0 HcmV?d00001 diff --git a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart index 95afd136..c39464bd 100644 --- a/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart +++ b/lib/screens/patients/profile/UCAF/UCAF-input-screen.dart @@ -116,7 +116,8 @@ class _UCAFInputScreenState extends State { title: AppText( TranslationBase.of(context).inPatient, fontWeight: FontWeight.normal, - fontSize: SizeConfig.textMultiplier * 2.1, + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 2.2, ), value: _inPatient, onChanged: (newValue) { @@ -124,6 +125,7 @@ class _UCAFInputScreenState extends State { _inPatient = newValue; }); }, + activeColor: HexColor("#D02127"), controlAffinity: ListTileControlAffinity.leading, contentPadding: EdgeInsets.all(0), @@ -132,7 +134,8 @@ class _UCAFInputScreenState extends State { title: AppText( TranslationBase.of(context).emergencyCase, fontWeight: FontWeight.normal, - fontSize: SizeConfig.textMultiplier * 2.1, + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 2.2, ), value: _emergencyCase, onChanged: (newValue) { @@ -140,12 +143,12 @@ class _UCAFInputScreenState extends State { _emergencyCase = newValue; }); }, + activeColor: HexColor("#D02127"), controlAffinity: ListTileControlAffinity.leading, contentPadding: EdgeInsets.all(0), ), AppTextFieldCustom( - height: screenSize.height * 0.075, hintText: TranslationBase.of(context) .durationOfIllness, dropDownText: "3", @@ -170,7 +173,7 @@ class _UCAFInputScreenState extends State { color: Color(0xFFCC9B14), ), SizedBox( - width: 4, + width: 8, ), AppText( "BP (H/L)", @@ -192,7 +195,7 @@ class _UCAFInputScreenState extends State { ], ), SizedBox( - width: 4, + width: 6, ), Expanded( child: Row( @@ -205,7 +208,7 @@ class _UCAFInputScreenState extends State { fontWeight: FontWeight.normal, ), SizedBox( - width: 8, + width: 4, ), Expanded( child: AppText( @@ -222,7 +225,7 @@ class _UCAFInputScreenState extends State { ], ), SizedBox( - height: 4, + height: 2, ), Row( mainAxisAlignment: @@ -231,14 +234,14 @@ class _UCAFInputScreenState extends State { Row( children: [ AppText( - "${TranslationBase.of(context).pulseBeats} :", + "${TranslationBase.of(context).pulseBeats}:", fontSize: SizeConfig.textMultiplier * 1.8, color: Colors.black, fontWeight: FontWeight.normal, ), SizedBox( - width: 8, + width: 4, ), AppText( "${model.patientVitalSigns.pulseBeatPerMinute}", @@ -258,8 +261,9 @@ class _UCAFInputScreenState extends State { TranslationBase.of(context) .chiefComplaintsAndSymptoms, fontFamily: 'Poppins', - fontSize: SizeConfig.textMultiplier * 2.1, + fontSize: SizeConfig.textMultiplier * 2.2, fontWeight: FontWeight.w700, + color: Color(0xFF2E303A), ), SizedBox( height: 4, @@ -269,6 +273,7 @@ class _UCAFInputScreenState extends State { .patientFeelsPainInHisBackAndCough, fontFamily: 'Poppins', fontWeight: FontWeight.normal, + color: Color(0xFF575757), fontSize: SizeConfig.textMultiplier * 1.8, ), SizedBox( @@ -292,7 +297,8 @@ class _UCAFInputScreenState extends State { AppText( TranslationBase.of(context).otherConditions, fontWeight: FontWeight.bold, - fontSize: SizeConfig.textMultiplier * 2.0, + fontSize: SizeConfig.textMultiplier * 2.1, + color: Color(0xFF2E303A), ), ...List.generate( conditionsData.length, @@ -302,6 +308,7 @@ class _UCAFInputScreenState extends State { fontWeight: FontWeight.normal, fontSize: SizeConfig.textMultiplier * 2.1, + fontFamily: 'Poppins', ), value: conditionsData[index] ['isChecked'], @@ -319,7 +326,6 @@ class _UCAFInputScreenState extends State { height: 8, ), AppTextFieldCustom( - height: screenSize.height * 0.075, hintText: TranslationBase.of(context).other, dropDownText: "None", enabled: false, @@ -328,7 +334,6 @@ class _UCAFInputScreenState extends State { height: 8, ), AppTextFieldCustom( - height: screenSize.height * 0.075, hintText: TranslationBase.of(context).how, dropDownText: "None", enabled: false, @@ -340,7 +345,6 @@ class _UCAFInputScreenState extends State { children: [ Expanded( child: AppTextFieldCustom( - height: screenSize.height * 0.075, hintText: TranslationBase.of(context).when, dropDownText: "None", @@ -352,7 +356,6 @@ class _UCAFInputScreenState extends State { ), Expanded( child: AppTextFieldCustom( - height: screenSize.height * 0.075, hintText: TranslationBase.of(context).where, dropDownText: "None", @@ -379,7 +382,8 @@ class _UCAFInputScreenState extends State { AppText( TranslationBase.of(context).significantSigns, fontWeight: FontWeight.bold, - fontSize: SizeConfig.textMultiplier * 2.1, + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 2.2, ), SizedBox( height: 8, diff --git a/lib/screens/patients/profile/UCAF/page-stepper-widget.dart b/lib/screens/patients/profile/UCAF/page-stepper-widget.dart index 58bcbab0..fa3d5daa 100644 --- a/lib/screens/patients/profile/UCAF/page-stepper-widget.dart +++ b/lib/screens/patients/profile/UCAF/page-stepper-widget.dart @@ -4,6 +4,15 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; +/// * +/// By Mousa Zaid Mousa Abuzaid +/// At 13/4/2021 + +/* + All hex value from 100% to 0% alpha: used in line 122 + https://gist.github.com/lopspower/03fb1cc0ac9f32ef38f4 + */ + class PageStepperWidget extends StatelessWidget { final int stepsCount; final int currentStepIndex; @@ -13,7 +22,7 @@ class PageStepperWidget extends StatelessWidget { @override Widget build(BuildContext context) { - double dividerWidth = (screenSize.width / stepsCount) - (5 * stepsCount); + double dividerWidth = (screenSize.width / stepsCount) - (10 * stepsCount); return Container( margin: EdgeInsets.symmetric(vertical: 16.0, horizontal: 16.0), @@ -38,6 +47,7 @@ class PageStepperWidget extends StatelessWidget { } class StepWidget extends StatelessWidget { + final int index; final bool isInProgress; final bool isFinalStep; @@ -71,24 +81,25 @@ class StepWidget extends StatelessWidget { width: 30, height: 30, decoration: BoxDecoration( - color: isInProgress ? Color(0xFFCC9B14) : Color(0xFFC9C9C9), + color: status == StepStatus.InProgress ? Color(0xFFCC9B14) : status == StepStatus.Locked ? Color(0xFFE3E3E3) : Color(0xFF359846), shape: BoxShape.circle, border: Border.all( - color: isInProgress ? Color(0xFFCC9B14) : Color(0xFFC9C9C9), + color: status == StepStatus.InProgress ? Color(0xFFCC9B14) : status == StepStatus.Locked ? Color(0xFFE3E3E3) : Color(0xFF359846), width: 1), ), child: Center( child: Icon( Icons.check, size: 20, - color: status == StepStatus.InProgress ? Colors.white : status == StepStatus.Locked ? Colors.grey.shade800 : Color(0xFF359846), + color: status == StepStatus.Locked ? Color(0xFF969696) : Colors.white, )), ), if (!isFinalStep) Container( + margin: EdgeInsets.symmetric(horizontal: 4), width: dividerWidth, height: 2, - color: Colors.grey, + color: status == StepStatus.Completed ? Color(0xFF359846) : Color(0xFFCCCCCC), ), ], ), @@ -98,23 +109,27 @@ class StepWidget extends StatelessWidget { AppText( "${TranslationBase.of(context).step} $index", fontWeight: FontWeight.bold, - color: status == StepStatus.InProgress ? Colors.black : status == StepStatus.Locked ? Colors.grey : Color(0xFF359846), + color: status == StepStatus.Locked ? Color(0xFF969696) : Colors.black, fontFamily: 'Poppins', fontSize: SizeConfig.textMultiplier * 1.6, ), Container( margin: EdgeInsets.symmetric(vertical: 4), - padding: EdgeInsets.symmetric(horizontal: 4, vertical: 2), + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 4), decoration: BoxDecoration( color: status == StepStatus.InProgress ? Color(0xFFF1E9D3) : status == StepStatus.Locked - ? Color(0xFFD8E8DB) - : Color(0xFFCCCCCC), + ? Color(0x29797979) + : Color(0xFFD8E8D8), borderRadius: BorderRadius.all( - Radius.circular(8.0), + Radius.circular(4.0), ), - border: Border.all(color: HexColor('#707070'), width: 0.30), + border: Border.all(color: status == StepStatus.InProgress + ? Color(0xFFF1E9D3) + : status == StepStatus.Locked + ? Color(0x29797979) + : Color(0xFFD8E8D8), width: 0.30), ), child: AppText( status == StepStatus.InProgress diff --git a/lib/screens/patients/profile/admission-request/admission-request-first-screen.dart b/lib/screens/patients/profile/admission-request/admission-request-first-screen.dart index 8095d04a..69886efb 100644 --- a/lib/screens/patients/profile/admission-request/admission-request-first-screen.dart +++ b/lib/screens/patients/profile/admission-request/admission-request-first-screen.dart @@ -118,14 +118,14 @@ class _AdmissionRequestThirdScreenState hintText: TranslationBase.of(context).clinic, isDropDown: true, dropDownText: _selectedClinic != null - ? _selectedClinic['clinicGroupName'] + ? projectViewModel.isArabic? _selectedClinic['clinicNameArabic'] : _selectedClinic['clinicNameEnglish'] : null, enabled: false, onClick: model.clinicList != null && model.clinicList.length > 0 ? () { openListDialogField( - 'clinicGroupName', + projectViewModel.isArabic? 'clinicNameArabic' : 'clinicNameEnglish', 'clinicID', model.clinicList, (selectedValue) { setState(() { @@ -142,7 +142,7 @@ class _AdmissionRequestThirdScreenState if (model.state == ViewState.Idle && model.clinicList.length > 0) { openListDialogField( - 'clinicGroupName', + projectViewModel.isArabic? 'clinicNameArabic' : 'clinicNameEnglish', 'clinicID', model.clinicList, (selectedValue) { setState(() { diff --git a/lib/screens/patients/profile/referral/refer-patient-screen.dart b/lib/screens/patients/profile/referral/refer-patient-screen.dart index 2619b200..4922f3a1 100644 --- a/lib/screens/patients/profile/referral/refer-patient-screen.dart +++ b/lib/screens/patients/profile/referral/refer-patient-screen.dart @@ -10,6 +10,7 @@ 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/patient-referral-item-widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart'; import 'package:doctor_app_flutter/widgets/shared/app-textfield-custom.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; @@ -71,7 +72,9 @@ class _PatientMakeReferralScreenState extends State { builder: (_, model, w) => AppScaffold( baseViewModel: model, appBarTitle: TranslationBase.of(context).referPatient, - isShowAppBar: false, + isShowAppBar: true, + appBar: PatientProfileHeaderNewDesignAppBar( + patient, patientType, arrivalType), body: SingleChildScrollView( child: Container( child: Column( @@ -80,8 +83,8 @@ class _PatientMakeReferralScreenState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - PatientProfileHeaderNewDesign( - patient, patientType, arrivalType), + /*PatientProfileHeaderNewDesign( + patient, patientType, arrivalType),*/ Container( margin: EdgeInsets.all(16.0), child: Column( @@ -357,7 +360,13 @@ class _PatientMakeReferralScreenState extends State { }, ); } - : null, + : (){ + if(_selectedClinic == null){ + DrAppToastMsg.showErrorToast("You need to select a clinic first"); + } else if(model.doctorsList == null || model.doctorsList.length == 0){ + DrAppToastMsg.showErrorToast("There is no doctors for this clinic"); + } + }, ), SizedBox( height: 10, diff --git a/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart b/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart index 5eea8f3d..3c0e4add 100644 --- a/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart +++ b/lib/screens/patients/profile/vital_sign/LineChartCurvedBloodPressure.dart @@ -90,10 +90,10 @@ class LineChartCurvedBloodPressure extends StatelessWidget { height: 20, decoration: BoxDecoration( shape: BoxShape.rectangle, - color: Colors.grey), + color: Colors.red), ), SizedBox(width: 5,), - AppText(TranslationBase.of(context).diastolicLng) + AppText(TranslationBase.of(context).diastolicLng,) ], ), ], @@ -248,7 +248,7 @@ class LineChartCurvedBloodPressure extends StatelessWidget { final LineChartBarData lineChartBarData2 = LineChartBarData( spots: spots2, isCurved: true, - colors: [Colors.grey], + colors: [Colors.red], barWidth: 5, isStrokeCapRound: true, dotData: FlDotData( diff --git a/lib/widgets/patients/patient-referral-item-widget.dart b/lib/widgets/patients/patient-referral-item-widget.dart index 606dccde..ddc41c82 100644 --- a/lib/widgets/patients/patient-referral-item-widget.dart +++ b/lib/widgets/patients/patient-referral-item-widget.dart @@ -455,28 +455,11 @@ class PatientReferralItemWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - width: 2, - height: 30, - color: Color(0xFFD9D9D9), - - /* - decoration: BoxDecoration( - shape: BoxShape.rectangle, - border: Border( - bottom: BorderSide( - color: Color(0xFFD9D9D9), width: 2.5), - left: BorderSide( - color: Color(0xFFD9D9D9), width: 2.5), - )), - */ - ), - Container( - margin: EdgeInsets.only( - left: 0, top: 20, right: 0, bottom: 0), - child: Icon( - Icons.arrow_forward, - color: Color(0xFFD9D9D9), - size: 30, + margin: EdgeInsets.only(left: 10, right: 0), + child: Image.asset( + infoIcon != null ? 'assets/images/patient/ic_ref_arrow_up.png' : 'assets/images/patient/ic_ref_arrow_left.png', + height: 50, + width: 30, ), ), Container( diff --git a/lib/widgets/shared/app-textfield-custom.dart b/lib/widgets/shared/app-textfield-custom.dart index 6c52001b..67d9c921 100644 --- a/lib/widgets/shared/app-textfield-custom.dart +++ b/lib/widgets/shared/app-textfield-custom.dart @@ -46,7 +46,7 @@ class _AppTextFieldCustomState extends State { @override Widget build(BuildContext context) { return Container( - height: widget.height != 0 ? widget.height : null, + height: widget.height != 0 ? widget.height + 8 : null, decoration: widget.hasBorder ? containerBorderDecoration(Color(0Xffffffff), Color(0xFFEFEFEF)) : null, @@ -57,53 +57,56 @@ class _AppTextFieldCustomState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if ((widget.controller != null && - widget.controller.text != "") || - widget.dropDownText != null) - AppText( - widget.hintText, - fontFamily: 'Poppins', - fontSize: SizeConfig.textMultiplier * 1.4, - fontWeight: FontWeight.w700, - ), - widget.dropDownText == null - ? TextField( - textAlign: TextAlign.left, - decoration: textFieldSelectorDecoration( - widget.hintText, null, true), - style: TextStyle( - fontSize: SizeConfig.textMultiplier * 1.7, + child: Container( + padding: widget.dropDownText == null ? EdgeInsets.symmetric(vertical: 0): EdgeInsets.symmetric(vertical: 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if ((widget.controller != null && + widget.controller.text != "") || + widget.dropDownText != null) + AppText( + widget.hintText, + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.4, + fontWeight: FontWeight.w700, + ), + widget.dropDownText == null + ? TextField( + textAlign: TextAlign.left, + decoration: textFieldSelectorDecoration( + widget.hintText, null, true), + style: TextStyle( + fontSize: SizeConfig.textMultiplier * 1.7, + fontFamily: 'Poppins', + color: Colors.grey.shade800, + ), + controller: widget.controller, + keyboardType: widget.inputType, + enabled: widget.enabled, + minLines: widget.minLines, + maxLines: widget.maxLines, + inputFormatters: widget.inputFormatters != null + ? widget.inputFormatters + : [], + onChanged: (value) { + if (widget.onChanged != null){ + widget.onChanged(value); + setState(() { + + }); + } + }, + ) + : AppText( + widget.dropDownText, fontFamily: 'Poppins', color: Colors.grey.shade800, + fontSize: SizeConfig.textMultiplier * 1.7, ), - controller: widget.controller, - keyboardType: widget.inputType, - enabled: widget.enabled, - minLines: widget.minLines, - maxLines: widget.maxLines, - inputFormatters: widget.inputFormatters != null - ? widget.inputFormatters - : [], - onChanged: (value) { - if (widget.onChanged != null){ - widget.onChanged(value); - setState(() { - - }); - } - }, - ) - : AppText( - widget.dropDownText, - fontFamily: 'Poppins', - color: Colors.grey.shade800, - fontSize: SizeConfig.textMultiplier * 1.7, - ), - ], + ], + ), ), ), widget.isDropDown From 7dfe9f843fe2d0703bf85afe8916cb98bb5432d0 Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Tue, 13 Apr 2021 13:13:40 +0300 Subject: [PATCH 13/16] hot fix in the expandable widget --- ios/Podfile.lock | 2 +- lib/main.dart | 2 +- lib/widgets/shared/expandable-widget-header-body.dart | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 2f4607e0..878a1850 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -322,4 +322,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69 -COCOAPODS: 1.10.0.rc.1 +COCOAPODS: 1.10.1 diff --git a/lib/main.dart b/lib/main.dart index a7515e7b..b5e8414d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -46,7 +46,7 @@ class MyApp extends StatelessWidget { child: Consumer( builder: (context, projectProvider, child) => MaterialApp( showSemanticsDebugger: false, - title: 'Flutter Demo', + title: 'Doctors App', locale: projectProvider.appLocal, localizationsDelegates: [ TranslationBaseDelegate(), diff --git a/lib/widgets/shared/expandable-widget-header-body.dart b/lib/widgets/shared/expandable-widget-header-body.dart index 97930285..20d95bcd 100644 --- a/lib/widgets/shared/expandable-widget-header-body.dart +++ b/lib/widgets/shared/expandable-widget-header-body.dart @@ -26,7 +26,12 @@ class _HeaderBodyExpandableNotifierState } @override Widget build(BuildContext context) { - + setState(() { + if (widget.isExpand == true) { + widget.expandFlag = widget.isExpand; + widget.controller.expanded = true; + } + }); return ExpandableNotifier( child: Padding( padding: const EdgeInsets.only(left: 0, right: 0), From 3047b655cf28382bfea5e99961ceba3de165924b Mon Sep 17 00:00:00 2001 From: mosazaid Date: Tue, 13 Apr 2021 14:07:14 +0300 Subject: [PATCH 14/16] add Validation for customtextfield --- lib/config/localized_values.dart | 4 + .../referral/refer-patient-screen.dart | 31 +++ lib/util/translations_delegate_base.dart | 2 +- lib/widgets/shared/app-textfield-custom.dart | 179 +++++++++++------- 4 files changed, 143 insertions(+), 73 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 19c05230..20cb9ef7 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -843,6 +843,10 @@ const Map> localizedValues = { "en": "Step", "ar": "خطوة" }, + "fieldRequired": { + "en": "This field is required", + "ar": "هذه الخانة مطلوبه" + }, "applyOrRescheduleLeave": { "en": "Apply Or Reschedule Leave", "ar": "التقدم بطلب أو إعادة جدولة الإجازة" diff --git a/lib/screens/patients/profile/referral/refer-patient-screen.dart b/lib/screens/patients/profile/referral/refer-patient-screen.dart index 4922f3a1..815ec93d 100644 --- a/lib/screens/patients/profile/referral/refer-patient-screen.dart +++ b/lib/screens/patients/profile/referral/refer-patient-screen.dart @@ -39,6 +39,11 @@ class _PatientMakeReferralScreenState extends State { DateTime appointmentDate; final _remarksController = TextEditingController(); + String branchError = null; + String hospitalError = null; + String clinicError = null; + String doctorError = null; + @override void initState() { super.initState(); @@ -148,6 +153,28 @@ class _PatientMakeReferralScreenState extends State { fontWeight: FontWeight.w700, color: HexColor("#359846"), onPressed: () { + setState(() { + if(_referTo == null){ + branchError = TranslationBase.of(context).fieldRequired; + }else { + branchError = null; + } + if(_selectedBranch == null){ + hospitalError = TranslationBase.of(context).fieldRequired; + }else { + hospitalError = null; + } + if(_selectedClinic == null){ + clinicError = TranslationBase.of(context).fieldRequired; + }else { + clinicError = null; + } + if(_selectedDoctor == null){ + doctorError = TranslationBase.of(context).fieldRequired; + }else { + doctorError = null; + } + }); if (appointmentDate == null || _selectedBranch == null || _selectedClinic == null || @@ -189,6 +216,7 @@ class _PatientMakeReferralScreenState extends State { dropDownText: _referTo != null ? _referTo['name'] : null, enabled: false, isDropDown: true, + validationError: branchError, onClick: referToList != null ? () { ListSelectDialog dialog = ListSelectDialog( @@ -241,6 +269,7 @@ class _PatientMakeReferralScreenState extends State { : null, enabled: false, isDropDown: true, + validationError: hospitalError, onClick: model.branchesList != null && model.branchesList.length > 0 && _referTo != null && @@ -288,6 +317,7 @@ class _PatientMakeReferralScreenState extends State { : null, enabled: false, isDropDown: true, + validationError: clinicError, onClick: _selectedBranch != null && model.clinicsList != null && model.clinicsList.length > 0 @@ -335,6 +365,7 @@ class _PatientMakeReferralScreenState extends State { _selectedDoctor != null ? _selectedDoctor['DoctorName'] : null, enabled: false, isDropDown: true, + validationError: doctorError, onClick: _selectedClinic != null && model.doctorsList != null && model.doctorsList.length > 0 diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index 265c7280..0a0248a6 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -1216,7 +1216,7 @@ class TranslationBase { String get remove => localizedValues['remove'][locale.languageCode]; String get step => localizedValues['step'][locale.languageCode]; - + String get fieldRequired => localizedValues['fieldRequired'][locale.languageCode]; String get noSickLeave => localizedValues['no-sickleve'][locale.languageCode]; String get changeOfSchedule => localizedValues['changeOfSchedule'][locale.languageCode]; diff --git a/lib/widgets/shared/app-textfield-custom.dart b/lib/widgets/shared/app-textfield-custom.dart index 67d9c921..9f671c66 100644 --- a/lib/widgets/shared/app-textfield-custom.dart +++ b/lib/widgets/shared/app-textfield-custom.dart @@ -1,4 +1,5 @@ import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'app_texts_widget.dart'; @@ -19,6 +20,7 @@ class AppTextFieldCustom extends StatefulWidget { final int maxLines; final List inputFormatters; final Function(String) onChanged; + final String validationError; AppTextFieldCustom({ this.height = 0, @@ -36,6 +38,7 @@ class AppTextFieldCustom extends StatefulWidget { this.maxLines = 1, this.inputFormatters, this.onChanged, + this.validationError, }); @override @@ -45,83 +48,115 @@ class AppTextFieldCustom extends StatefulWidget { class _AppTextFieldCustomState extends State { @override Widget build(BuildContext context) { - return Container( - height: widget.height != 0 ? widget.height + 8 : null, - decoration: widget.hasBorder - ? containerBorderDecoration(Color(0Xffffffff), Color(0xFFEFEFEF)) - : null, - padding: EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0), - child: InkWell( - onTap: widget.onClick ?? null, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Expanded( - child: Container( - padding: widget.dropDownText == null ? EdgeInsets.symmetric(vertical: 0): EdgeInsets.symmetric(vertical: 8), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if ((widget.controller != null && - widget.controller.text != "") || - widget.dropDownText != null) - AppText( - widget.hintText, - fontFamily: 'Poppins', - fontSize: SizeConfig.textMultiplier * 1.4, - fontWeight: FontWeight.w700, - ), - widget.dropDownText == null - ? TextField( - textAlign: TextAlign.left, - decoration: textFieldSelectorDecoration( - widget.hintText, null, true), - style: TextStyle( - fontSize: SizeConfig.textMultiplier * 1.7, - fontFamily: 'Poppins', - color: Colors.grey.shade800, - ), - controller: widget.controller, - keyboardType: widget.inputType, - enabled: widget.enabled, - minLines: widget.minLines, - maxLines: widget.maxLines, - inputFormatters: widget.inputFormatters != null - ? widget.inputFormatters - : [], - onChanged: (value) { - if (widget.onChanged != null){ - widget.onChanged(value); - setState(() { - - }); - } - }, - ) - : AppText( - widget.dropDownText, + return Column( + children: [ + Container( + height: widget.height != 0 ? widget.height + 8 : null, + decoration: widget.hasBorder + ? containerBorderDecoration( + Color(0Xffffffff), + widget.validationError == null + ? Color(0xFFEFEFEF) + : Colors.red.shade700) + : null, + padding: + EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0), + child: InkWell( + onTap: widget.onClick ?? null, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: Container( + padding: widget.dropDownText == null + ? EdgeInsets.symmetric(vertical: 0) + : EdgeInsets.symmetric(vertical: 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if ((widget.controller != null && + widget.controller.text != "") || + widget.dropDownText != null) + AppText( + widget.hintText, fontFamily: 'Poppins', - color: Colors.grey.shade800, - fontSize: SizeConfig.textMultiplier * 1.7, + fontSize: SizeConfig.textMultiplier * 1.4, + fontWeight: FontWeight.w700, ), - ], + widget.dropDownText == null + ? TextField( + textAlign: TextAlign.left, + decoration: textFieldSelectorDecoration( + widget.hintText, null, true), + style: TextStyle( + fontSize: SizeConfig.textMultiplier * 1.7, + fontFamily: 'Poppins', + color: Colors.grey.shade800, + ), + controller: widget.controller, + keyboardType: widget.inputType, + enabled: widget.enabled, + minLines: widget.minLines, + maxLines: widget.maxLines, + inputFormatters: widget.inputFormatters != null + ? widget.inputFormatters + : [], + onChanged: (value) { + if (widget.onChanged != null) { + widget.onChanged(value); + setState(() {}); + } + }, + ) + : AppText( + widget.dropDownText, + fontFamily: 'Poppins', + color: Colors.grey.shade800, + fontSize: SizeConfig.textMultiplier * 1.7, + ), + ], + ), + ), ), - ), + widget.isDropDown + ? widget.suffixIcon != null + ? widget.suffixIcon + : Icon( + Icons.keyboard_arrow_down, + color: widget.dropDownColor != null + ? widget.dropDownColor + : Colors.black, + ) + : Container(), + ], ), - widget.isDropDown - ? widget.suffixIcon != null - ? widget.suffixIcon - : Icon( - Icons.keyboard_arrow_down, - color: widget.dropDownColor != null - ? widget.dropDownColor - : Colors.black, - ) - : Container(), - ], + ), ), - ), + if (widget.validationError != null) + Container( + margin: EdgeInsets.only(top: 8, right: 8, left: 8, bottom: 8), + child: Row( + children: [ + Icon( + DoctorApp.warning, + size: 20, + color: Colors.red.shade700, + ), + SizedBox( + width: 12, + ), + AppText( + widget.validationError, + fontFamily: 'Poppins', + fontSize: SizeConfig.textMultiplier * 1.7, + color: Colors.red.shade700, + fontWeight: FontWeight.w700, + ), + ], + ), + ), + ], ); } From 844bd9ba27f6d45a9c7a8d78af88c17dae66f636 Mon Sep 17 00:00:00 2001 From: hussam al-habibeh Date: Tue, 13 Apr 2021 14:10:39 +0300 Subject: [PATCH 15/16] add lab & add radiology update --- .../profile/lab_result/labs_home_page.dart | 20 +- .../radiology/radiology_home_page.dart | 58 ++-- lib/screens/procedures/add_lab_orders.dart | 289 +++++++++--------- .../procedures/add_radiology_order.dart | 285 ++++++++--------- 4 files changed, 345 insertions(+), 307 deletions(-) diff --git a/lib/screens/patients/profile/lab_result/labs_home_page.dart b/lib/screens/patients/profile/lab_result/labs_home_page.dart index 23f40f06..79920811 100644 --- a/lib/screens/patients/profile/lab_result/labs_home_page.dart +++ b/lib/screens/patients/profile/lab_result/labs_home_page.dart @@ -36,7 +36,8 @@ class LabsHomePage extends StatelessWidget { builder: (context, ProcedureViewModel model, widget) => AppScaffold( baseViewModel: model, isShowAppBar: true, - appBar: PatientProfileHeaderNewDesignAppBar(patient, patient.patientType.toString() ?? '0', patientType), + appBar: PatientProfileHeaderNewDesignAppBar( + patient, patient.patientType.toString() ?? '0', patientType), body: SingleChildScrollView( physics: BouncingScrollPhysics(), child: FractionallySizedBox( @@ -66,11 +67,24 @@ class LabsHomePage extends StatelessWidget { ], ), ), - if (patientType != null && patientType == '7' && patient.patientStatusType == 43) + if (patientType != null && + patientType == '7' && + patient.patientStatusType == 43) InkWell( onTap: () { - addSelectedLabOrder(context, model, patient); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => AddSelectedLabOrder( + patient: patient, + model: model, + )), + ); }, + + // () { + // addSelectedLabOrder(context, model, patient); + // }, child: Container( width: double.maxFinite, height: 140, diff --git a/lib/screens/patients/profile/radiology/radiology_home_page.dart b/lib/screens/patients/profile/radiology/radiology_home_page.dart index 5cb14b8a..9adb8ae8 100644 --- a/lib/screens/patients/profile/radiology/radiology_home_page.dart +++ b/lib/screens/patients/profile/radiology/radiology_home_page.dart @@ -33,7 +33,8 @@ class RadiologyHomePage extends StatelessWidget { builder: (_, model, widget) => AppScaffold( isShowAppBar: true, // appBarTitle: TranslationBase.of(context).radiology, - appBar: PatientProfileHeaderNewDesignAppBar(patient, patient.patientType.toString() ?? '0', arrivalType), + appBar: PatientProfileHeaderNewDesignAppBar( + patient, patient.patientType.toString() ?? '0', arrivalType), baseViewModel: model, body: FractionallySizedBox( widthFactor: 1.0, @@ -62,11 +63,23 @@ class RadiologyHomePage extends StatelessWidget { ], ), ), - if (patientType != null && patientType == '7' && patient.patientStatusType == 43) + if (patientType != null && + patientType == '7' && + patient.patientStatusType == 43) InkWell( onTap: () { - addSelectedRadiologyOrder(context, model, patient); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => AddSelectedRadiologyOrder( + patient: patient, + model: model, + )), + ); }, + // () { + // addSelectedRadiologyOrder(context, model, patient); + // }, child: Container( width: double.maxFinite, height: 140, @@ -108,25 +121,26 @@ class RadiologyHomePage extends StatelessWidget { ), ), ), - ...List.generate(model.radiologyList.length, (index) => InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: RadiologyDetailsPage( - finalRadiology: model.radiologyList[index], - patient: patient, - ), - ), - ), - child: DoctorCard( - doctorName: model.radiologyList[index].doctorName, - profileUrl: model.radiologyList[index].doctorImageURL, - invoiceNO: '${model.radiologyList[index].invoiceNo}', - branch: '${model.radiologyList[index].projectName}', - appointmentDate: model.radiologyList[index].orderDate, - ), - )), - + ...List.generate( + model.radiologyList.length, + (index) => InkWell( + onTap: () => Navigator.push( + context, + FadePage( + page: RadiologyDetailsPage( + finalRadiology: model.radiologyList[index], + patient: patient, + ), + ), + ), + child: DoctorCard( + doctorName: model.radiologyList[index].doctorName, + profileUrl: model.radiologyList[index].doctorImageURL, + invoiceNO: '${model.radiologyList[index].invoiceNo}', + branch: '${model.radiologyList[index].projectName}', + appointmentDate: model.radiologyList[index].orderDate, + ), + )), ], ), ), diff --git a/lib/screens/procedures/add_lab_orders.dart b/lib/screens/procedures/add_lab_orders.dart index d255308f..252dce0b 100644 --- a/lib/screens/procedures/add_lab_orders.dart +++ b/lib/screens/procedures/add_lab_orders.dart @@ -12,6 +12,7 @@ import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; @@ -142,154 +143,158 @@ class _AddSelectedLabOrderState extends State { onModelReady: (model) => model.getProcedureCategory( categoryName: "Laboratory", categoryID: "02"), builder: (BuildContext context, ProcedureViewModel model, Widget child) => - NetworkBaseView( - baseViewModel: model, - child: DraggableScrollableSheet( - minChildSize: 0.90, - initialChildSize: 0.95, - maxChildSize: 1.0, - builder: (BuildContext context, ScrollController scrollController) { - return SingleChildScrollView( - child: Container( - height: MediaQuery.of(context).size.height * 1.20, - child: Padding( - padding: EdgeInsets.all(12.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - AppText( - 'New Lab Order', - fontWeight: FontWeight.w700, - fontSize: 20, - ), - SizedBox( - width: MediaQuery.of(context).size.width * 0.48, - ), - InkWell( - child: Icon( - Icons.close, - size: 28.0, + AppScaffold( + isShowAppBar: false, + body: NetworkBaseView( + baseViewModel: model, + child: DraggableScrollableSheet( + minChildSize: 0.90, + initialChildSize: 0.95, + maxChildSize: 1.0, + builder: + (BuildContext context, ScrollController scrollController) { + return SingleChildScrollView( + child: Container( + height: MediaQuery.of(context).size.height * 1.0, + child: Padding( + padding: EdgeInsets.all(12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + AppText( + 'New Lab Order', + fontWeight: FontWeight.w700, + fontSize: 20, ), - onTap: () { - Navigator.pop(context); - }, - ), - ], - ), - SizedBox( - height: 10.0, - ), - if (widget.model.categoriesList.length != 0) - NetworkBaseView( - baseViewModel: model, - child: EntityListCheckboxSearchWidget( - model: widget.model, - masterList: - widget.model.categoriesList[0].entityList, - removeHistory: (item) { - setState(() { - entityList.remove(item); - }); - }, - addHistory: (history) { - setState(() { - entityList.add(history); - }); - }, - addSelectedHistories: () { - //TODO build your fun herr - // widget.addSelectedHistories(); + SizedBox( + width: MediaQuery.of(context).size.width * 0.48, + ), + InkWell( + child: Icon( + Icons.close, + size: 28.0, + ), + onTap: () { + Navigator.pop(context); }, - isEntityListSelected: (master) => - isEntityListSelected(master), - )), - SizedBox( - height: 15.0, - ), - Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - // Container( - // child: Row( - // children: [ - // AppText( - // TranslationBase.of(context).orderType), - // Radio( - // activeColor: Color(0xFFB9382C), - // value: 1, - // groupValue: selectedType, - // onChanged: (value) { - // setSelectedType(value); - // }, - // ), - // Text('routine'), - // Radio( - // activeColor: Color(0xFFB9382C), - // groupValue: selectedType, - // value: 0, - // onChanged: (value) { - // setSelectedType(value); - // }, - // ), - // Text(TranslationBase.of(context).urgent), - // ], - // ), - // ), - // SizedBox( - // height: 15.0, - // ), - // TextFields( - // hintText: TranslationBase.of(context).remarks, - // controller: remarksController, - // minLines: 3, - // maxLines: 5, - // ), - SizedBox( - height: 100.0, - ), - Container( - margin: EdgeInsets.all( - SizeConfig.widthMultiplier * 5), - child: Wrap( - alignment: WrapAlignment.center, - children: [ - AppButton( - title: - "Add Lab Order", //TranslationBase.of(context) - fontWeight: FontWeight.w700, - //.addSelectedProcedures, - color: Color(0xff359846), - onPressed: () { - //print(entityList.toString()); - onPressed: - if (entityList.isEmpty == true) { - DrAppToastMsg.showErrorToast( - "Fill the mandatory procedure details"); - return; - } + ), + ], + ), + SizedBox( + height: 10.0, + ), + if (widget.model.categoriesList.length != 0) + NetworkBaseView( + baseViewModel: model, + child: EntityListCheckboxSearchWidget( + model: widget.model, + masterList: + widget.model.categoriesList[0].entityList, + removeHistory: (item) { + setState(() { + entityList.remove(item); + }); + }, + addHistory: (history) { + setState(() { + entityList.add(history); + }); + }, + addSelectedHistories: () { + //TODO build your fun herr + // widget.addSelectedHistories(); + }, + isEntityListSelected: (master) => + isEntityListSelected(master), + )), + SizedBox( + height: 15.0, + ), + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // Container( + // child: Row( + // children: [ + // AppText( + // TranslationBase.of(context).orderType), + // Radio( + // activeColor: Color(0xFFB9382C), + // value: 1, + // groupValue: selectedType, + // onChanged: (value) { + // setSelectedType(value); + // }, + // ), + // Text('routine'), + // Radio( + // activeColor: Color(0xFFB9382C), + // groupValue: selectedType, + // value: 0, + // onChanged: (value) { + // setSelectedType(value); + // }, + // ), + // Text(TranslationBase.of(context).urgent), + // ], + // ), + // ), + // SizedBox( + // height: 15.0, + // ), + // TextFields( + // hintText: TranslationBase.of(context).remarks, + // controller: remarksController, + // minLines: 3, + // maxLines: 5, + // ), + SizedBox( + height: 100.0, + ), + Container( + margin: EdgeInsets.all( + SizeConfig.widthMultiplier * 5), + child: Wrap( + alignment: WrapAlignment.center, + children: [ + AppButton( + title: + "Add Lab Order", //TranslationBase.of(context) + fontWeight: FontWeight.w700, + //.addSelectedProcedures, + color: Color(0xff359846), + onPressed: () { + //print(entityList.toString()); + onPressed: + if (entityList.isEmpty == true) { + DrAppToastMsg.showErrorToast( + "Fill the mandatory procedure details"); + return; + } - Navigator.pop(context); - postProcedure( - orderType: selectedType.toString(), - entityList: entityList, - patient: patient, - model: widget.model, - remarks: remarksController.text); - }, - ), - ], + Navigator.pop(context); + postProcedure( + orderType: selectedType.toString(), + entityList: entityList, + patient: patient, + model: widget.model, + remarks: remarksController.text); + }, + ), + ], + ), ), - ), - ], - ) - ], + ], + ) + ], + ), ), ), - ), - ); - }), + ); + }), + ), ), ); } diff --git a/lib/screens/procedures/add_radiology_order.dart b/lib/screens/procedures/add_radiology_order.dart index 2f74060e..aa897569 100644 --- a/lib/screens/procedures/add_radiology_order.dart +++ b/lib/screens/procedures/add_radiology_order.dart @@ -12,6 +12,7 @@ import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/dialogs/dailog-list-select.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; @@ -142,152 +143,156 @@ class _AddSelectedRadiologyOrderState extends State { onModelReady: (model) => model.getProcedureCategory( categoryName: "Radiology", categoryID: "03"), builder: (BuildContext context, ProcedureViewModel model, Widget child) => - NetworkBaseView( - baseViewModel: model, - child: DraggableScrollableSheet( - minChildSize: 0.90, - initialChildSize: 0.95, - maxChildSize: 1.0, - builder: (BuildContext context, ScrollController scrollController) { - return SingleChildScrollView( - child: Container( - height: MediaQuery.of(context).size.height * 1.20, - child: Padding( - padding: EdgeInsets.all(12.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - AppText( - 'New Radiology Order', - fontWeight: FontWeight.w700, - fontSize: 20, - ), - SizedBox( - width: MediaQuery.of(context).size.width * 0.48, - ), - InkWell( - child: Icon( - Icons.close, - size: 28.0, + AppScaffold( + isShowAppBar: false, + body: NetworkBaseView( + baseViewModel: model, + child: DraggableScrollableSheet( + minChildSize: 0.90, + initialChildSize: 0.95, + maxChildSize: 1.0, + builder: + (BuildContext context, ScrollController scrollController) { + return SingleChildScrollView( + child: Container( + height: MediaQuery.of(context).size.height * 1.0, + child: Padding( + padding: EdgeInsets.all(12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + AppText( + 'New Radiology Order', + fontWeight: FontWeight.w700, + fontSize: 20, ), - onTap: () { - Navigator.pop(context); - }, - ), - ], - ), - SizedBox( - height: 10.0, - ), - if (widget.model.categoriesList.length != 0) - NetworkBaseView( - baseViewModel: model, - child: EntityListCheckboxSearchWidget( - model: widget.model, - masterList: - widget.model.categoriesList[0].entityList, - removeHistory: (item) { - setState(() { - entityList.remove(item); - }); - }, - addHistory: (history) { - setState(() { - entityList.add(history); - }); - }, - addSelectedHistories: () { - //TODO build your fun herr - // widget.addSelectedHistories(); + SizedBox( + width: MediaQuery.of(context).size.width * 0.48, + ), + InkWell( + child: Icon( + Icons.close, + size: 28.0, + ), + onTap: () { + Navigator.pop(context); }, - isEntityListSelected: (master) => - isEntityListSelected(master), - )), - SizedBox( - height: 15.0, - ), - Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - // Container( - // child: Row( - // children: [ - // AppText( - // TranslationBase.of(context).orderType), - // Radio( - // activeColor: Color(0xFFB9382C), - // value: 1, - // groupValue: selectedType, - // onChanged: (value) { - // setSelectedType(value); - // }, - // ), - // Text('routine'), - // Radio( - // activeColor: Color(0xFFB9382C), - // groupValue: selectedType, - // value: 0, - // onChanged: (value) { - // setSelectedType(value); - // }, - // ), - // Text(TranslationBase.of(context).urgent), - // ], - // ), - // ), - // SizedBox( - // height: 15.0, - // ), - // TextFields( - // hintText: TranslationBase.of(context).remarks, - // controller: remarksController, - // minLines: 3, - // maxLines: 5, - // ), - SizedBox( - height: 100.0, - ), - Container( - margin: EdgeInsets.all( - SizeConfig.widthMultiplier * 5), - child: Wrap( - alignment: WrapAlignment.center, - children: [ - AppButton( - title: 'Add Radiology Order', - color: Color(0xff359846), - fontWeight: FontWeight.w700, - onPressed: () { - //print(entityList.toString()); - onPressed: - if (entityList.isEmpty == true) { - DrAppToastMsg.showErrorToast( - "Fill the mandatory procedure details"); - return; - } + ), + ], + ), + SizedBox( + height: 10.0, + ), + if (widget.model.categoriesList.length != 0) + NetworkBaseView( + baseViewModel: model, + child: EntityListCheckboxSearchWidget( + model: widget.model, + masterList: + widget.model.categoriesList[0].entityList, + removeHistory: (item) { + setState(() { + entityList.remove(item); + }); + }, + addHistory: (history) { + setState(() { + entityList.add(history); + }); + }, + addSelectedHistories: () { + //TODO build your fun herr + // widget.addSelectedHistories(); + }, + isEntityListSelected: (master) => + isEntityListSelected(master), + )), + SizedBox( + height: 15.0, + ), + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // Container( + // child: Row( + // children: [ + // AppText( + // TranslationBase.of(context).orderType), + // Radio( + // activeColor: Color(0xFFB9382C), + // value: 1, + // groupValue: selectedType, + // onChanged: (value) { + // setSelectedType(value); + // }, + // ), + // Text('routine'), + // Radio( + // activeColor: Color(0xFFB9382C), + // groupValue: selectedType, + // value: 0, + // onChanged: (value) { + // setSelectedType(value); + // }, + // ), + // Text(TranslationBase.of(context).urgent), + // ], + // ), + // ), + // SizedBox( + // height: 15.0, + // ), + // TextFields( + // hintText: TranslationBase.of(context).remarks, + // controller: remarksController, + // minLines: 3, + // maxLines: 5, + // ), + SizedBox( + height: 100.0, + ), + Container( + margin: EdgeInsets.all( + SizeConfig.widthMultiplier * 5), + child: Wrap( + alignment: WrapAlignment.center, + children: [ + AppButton( + title: 'Add Radiology Order', + color: Color(0xff359846), + fontWeight: FontWeight.w700, + onPressed: () { + //print(entityList.toString()); + onPressed: + if (entityList.isEmpty == true) { + DrAppToastMsg.showErrorToast( + "Fill the mandatory procedure details"); + return; + } - Navigator.pop(context); - postProcedure( - orderType: selectedType.toString(), - entityList: entityList, - patient: patient, - model: widget.model, - remarks: remarksController.text); - }, - ), - ], + Navigator.pop(context); + postProcedure( + orderType: selectedType.toString(), + entityList: entityList, + patient: patient, + model: widget.model, + remarks: remarksController.text); + }, + ), + ], + ), ), - ), - ], - ) - ], + ], + ) + ], + ), ), ), - ), - ); - }), + ); + }), + ), ), ); } From 8055fa17eb023027296a8a02dc659ca700cf06da Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Tue, 13 Apr 2021 14:39:48 +0300 Subject: [PATCH 16/16] add the branch in all doctors card and add no data image --- assets/images/no-data.png | Bin 0 -> 3565 bytes .../viewModel/medical_file_view_model.dart | 2 +- .../medical-file/medical_file_page.dart | 175 --------------- .../lab_result/laboratory_result_page.dart | 2 + .../profile/lab_result/labs_home_page.dart | 1 + .../radiology/radiology_details_page.dart | 3 + .../radiology/radiology_home_page.dart | 1 + .../prescription/prescription_items_page.dart | 1 + lib/screens/procedures/procedure_screen.dart | 208 +++++++++--------- ...ent-profile-header-new-design-app-bar.dart | 4 +- ..._header_with_appointment_card_app_bar.dart | 8 +- lib/widgets/shared/doctor_card.dart | 135 ++++++------ lib/widgets/shared/network_base_view.dart | 10 +- 13 files changed, 197 insertions(+), 353 deletions(-) create mode 100644 assets/images/no-data.png diff --git a/assets/images/no-data.png b/assets/images/no-data.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd47e0fa675a44eb2e56d389f54cd90ee75b9a5 GIT binary patch literal 3565 zcmbtX*FPJK*N;#{%&Mq8TRYU=T6;94Mo_W$EJ})^_KH%ws2audpjH&IDQa(uA_=u> z*H+Z)x%vGA@5T3=@7WjU;(Sg#TwjZdf|&vU08r^@s~g_xSGVvWC%u($ev!#rMfB28 zOBGNx%KGcpkaaZEae~1Bg14L;Kosi=Ao(xl7Rk@W zNM~yi!4X{VtQ*bGsh~o^P|mF7#+{-)rzxm=5uT?@^~^oZT}}7tvt3zGq0i*UpXU+{ z$!GHm^9vUEi}q90+4sxApV@)V>v@5AXJ?cX>NK-|e!6Q*V~!0mO<8mEsHJYlZLZ0< z0P+sI1VCWfVfR}(6|yL%ft%U3C?K*8Z&nc0G=dNg!{w3_It^>!wcQyc*cp)DVs~p2 zN$?N;nM>XN%g?dgq1?&I4hfV#jr+~86g5Uw=a?eJ%NtS58~Qr0!eqTuUID6ct@*r( zQasPDn;`eT4h`KuuifliKQhw&sX!@m0M3ch6>GcLe#7-rAH1j>oMwpoOgRE zC^Dw;)2R4I4#j%}>d!}q%TOEEoIjnzK z_vPnl;s=~HCK1Zei|=xBX&>EF`!dyKLa`&Sd^_h$}0%pV3Ct`(vcE&k3Qs$X&q^d1$1SvW)xBjvC=jGa)P zeRJv9%6$_+z|AyCWu9YLprLCrf0RUf1?aYX<=OSfY%#$nTI6e1T}Sdajw)%ypi0 zA=iGNPcoN92X2xc=9Obv`P578E}GocWBI4InGZ8+t6+do>h*3$PAsR>7ARFnFzr$@ z&a+u-3~v)=Z(}7$*MKqZc4XdXwcCza(oF;kqk)!ZiQK`Z#Wuc>6s=L0MHLP-u!b{! ziL-@S{XOAw{sg0!i^={gg*i@Uh}G;Yzo8bg>{nJJ47-v=t}i12-e z?i2peKIMN!wj9qmIIl0h!qJQN*Rc)0*P({~?@02hfpAu50BW_ka<=5929)6?j zg)&Ml)fn7-@+;vBO`OLg-;lfY9mbar#;iMN^v6$ zwaV+fJLdNN-}fvwj_x^1)0e*|m5bVIe@*N;-zq=`Iu-acc63v8hGT)V6a&H3--qA3 z*6>A+bbY$&(WX_wQ+vzuuW0_s3{_aqhlNH9U!@ z%m04ho=QdKRHx?XLi~Z#BRCjoqPA#nLJDlo#moCd@#Pq^WX*QQfvdv54eO`(Wmz^& zm#o^F2j&&Mt+SU)gFMI`JhE#`q3N)dupfXsI_|Is=`;p%u{>$oponx~Ul|f6Hl^cY zU$?k`#X-rTIN{w)?B!`(!qiD%F^IC`{L6r@CKs#&-F7%Sa_p2*Q-j{e6j>+h{bp9~m(r>5Q&6cuHhh&bLzm-2|bK_B=1%#(aXx8&39aldh%%ukPN z$I2fQatK4pXf9XTQSZ=Y48(RgO)lL1Y;up@F*;eK7xuFDl^Y4iUs0io`e%JnkA&^l z-(Y{fFQ=#O&qE@<<=&q-8r!VgoOvD;Hs-K9-uk8(HYAzIbe@Z}PFGZJ-HLea^_Dj3 z(}P@Zgp8KBs%8>QtnGZZR6ZcG0zLBBzQ1WKl9?W zIwg|3m3VD5v;O3seL&k4M|d_N*lB9b$q0_65)>3iT9?dI;upcU8VibJ)~?_B{gZ3 zP8f1U_S~73wI~&c50@gdz<9ingXzf%mj?M4YF|SA>%(zCv2s&yQj!0n3q*F6uUnE<2Yv}W-XW_L@rb{^sZxbD(YWa z1=EXSn(DVbo*_k5vff7_$BqJ#x%)gCvVA2>v!vL)8cHGAbfh;Mh48d*m%kX+=M4EF z(X7e0Byy%+Uy5f}US3{zMl>t7H!0|f#kOxJp(;u8M6^tA}-$UZf?HJ3H9GLJ{80a zOb*tIBgeZj88Jdp&EV#ZQg;FlXQiyMRruq_^TUhaUl5`5;H2HA_c|}|?UtnVg@xf) zp(-;oGZP66LYtl8#9M961UjTTQC~P(O0bh8>?-Xs*jTF>z}}uVAnsjJPI>v@P&W9- z!UCwCH2hNneXKI7;a&~ z;%D+#q<+qmKKfbwp01a=l*;lat1?OTHG1YhNY)S zfRIbr>sq~w`mi#>x+#NcGY$yF2BBs7_ae4A#ZJnxge{Sk0xY;HvU9p(C8DA+E^-Bm zr3M;RCxEMP+|&sz1bOnOZG!)gA}=QFxkjcc-xVq*Z(y3(R{^CxjpqnC+S{z9mps_N znVXjuSct(#%l z_h3WQpe%)i=&yEMPd-Ho{%4PAYjE=mq6hq`5WQei@}NE3$;Fq!Ri3n81XWNlT<7N5 z1D^EmEV25IU&HxKC!!CtR5X4J0rsD;11^!<$&5o*-mbTss?mS;>?(^NJZi@zJ*OK2 zBV*iOM;IGBxD~S_2ne9ro4LsSJk(A5Ey$VXpULDL38c4;g{4A0<)LT4v zi0j+U;LE)&2@T-^o zl^9bNT`+NcPfIwtrZet-l`~*d-rEk^ee{K5^XT?Ei)D { ), ); - // return Padding( - // padding: EdgeInsets.symmetric( - // horizontal: 12.0, vertical: 8.0), - // child: InkWell( - // child: Container( - // width: double.infinity, - // margin: EdgeInsets.only( - // top: 10, left: 10, right: 10), - // padding: EdgeInsets.all(8.0), - // decoration: BoxDecoration( - // color: Colors.white, - // borderRadius: BorderRadius.all( - // Radius.circular(10.0), - // ), - // border: Border.all( - // color: Colors.grey[200], width: 0.5), - // ), - // child: Column( - // children: [ - // Row( - // mainAxisAlignment: - // MainAxisAlignment.spaceBetween, - // children: [ - // Row( - // children: [ - // AppText( - // model - // .medicalFileList[0] - // .entityList[0] - // .timelines[index] - // .doctorName, - // fontWeight: FontWeight.w700, - // fontSize: 17.0, - // fontFamily: 'Poppins', - // ) - // ], - // ), - // Row( - // children: [ - // AppText( - // Helpers.convertStringToDate(model - // .medicalFileList[0] - // .entityList[0] - // .timelines[index] - // .date) - // .day - // .toString() + - // "/", - // ), - // AppText( - // Helpers.convertStringToDate(model - // .medicalFileList[0] - // .entityList[0] - // .timelines[index] - // .date) - // .month - // .toString() + - // "/", - // ), - // AppText( - // Helpers.convertStringToDate( - // model - // .medicalFileList[0] - // .entityList[0] - // .timelines[index] - // .date) - // .year - // .toString(), - // ), - // ], - // ) - // ], - // ), - // Row( - // mainAxisAlignment: - // MainAxisAlignment.start, - // children: [ - // Padding( - // padding: const EdgeInsets.all(8.0), - // child: Column( - // children: [ - // ClipRRect( - // borderRadius: - // BorderRadius.all( - // Radius.circular(30)), - // child: Image.network( - // 'https://previews.123rf.com/images/yupiramos/yupiramos1705/yupiramos170524444/78443570-a-female-doctor-avatar-character-vector-illustration-design.jpg', - // fit: BoxFit.cover, - // width: 60, - // height: 70, - // ), - // ), - // ], - // ), - // ), - // Column( - // crossAxisAlignment: - // CrossAxisAlignment.start, - // children: [ - // Row( - // children: [ - // AppText( - // TranslationBase.of(context) - // .clinic + - // ": ", - // ), - // AppText( - // model - // .medicalFileList[0] - // .entityList[0] - // .timelines[index] - // .clinicName, - // fontWeight: FontWeight.w600, - // ), - // ], - // ), - // Row( - // mainAxisAlignment: - // MainAxisAlignment - // .spaceBetween, - // children: [ - // AppText( - // TranslationBase.of(context) - // .branch + - // ": ", - // ), - // AppText( - // model - // .medicalFileList[0] - // .entityList[0] - // .timelines[index] - // .projectName, - // fontWeight: FontWeight.w600, - // ), - // ], - // ), - // ], - // ), - // ], - // ), - // Row( - // mainAxisAlignment: - // MainAxisAlignment.end, - // children: [ - // Column( - // children: [ - // Icon( - // Icons.remove_red_eye, - // size: 30.0, - // ) - // ], - // ) - // ], - // ), - // ], - // ), - // ), - // onTap: () { - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) => - // MedicalFileDetails( - // age: patient.age, - // firstName: patient.firstName, - // lastName: patient.lastName, - // gender: patient.genderDescription, - // encounterNumber: index, - // pp: patient.patientId, - // patient: patient, - // )), - // ); - // }, - // ), - // ); }) : Column( children: [ diff --git a/lib/screens/patients/profile/lab_result/laboratory_result_page.dart b/lib/screens/patients/profile/lab_result/laboratory_result_page.dart index a61477e7..0d8b1749 100644 --- a/lib/screens/patients/profile/lab_result/laboratory_result_page.dart +++ b/lib/screens/patients/profile/lab_result/laboratory_result_page.dart @@ -43,6 +43,8 @@ class _LaboratoryResultPageState extends State { orderNo: widget.patientLabOrders.orderNo, appointmentDate:widget.patientLabOrders.orderDate, doctorName: widget.patientLabOrders.doctorName, + branch: widget.patientLabOrders.projectName, + clinic: widget.patientLabOrders.clinicDescription, profileUrl: widget.patientLabOrders.doctorImageURL, invoiceNO: widget.patientLabOrders.invoiceNo, ), diff --git a/lib/screens/patients/profile/lab_result/labs_home_page.dart b/lib/screens/patients/profile/lab_result/labs_home_page.dart index 23f40f06..b1516ba8 100644 --- a/lib/screens/patients/profile/lab_result/labs_home_page.dart +++ b/lib/screens/patients/profile/lab_result/labs_home_page.dart @@ -136,6 +136,7 @@ class LabsHomePage extends StatelessWidget { invoiceNO: ' ${labOrder.invoiceNo}', profileUrl: labOrder.doctorImageURL, branch: labOrder.projectName, + clinic: labOrder.clinicDescription, appointmentDate: labOrder.orderDate, orderNo: labOrder.orderNo, ); diff --git a/lib/screens/patients/profile/radiology/radiology_details_page.dart b/lib/screens/patients/profile/radiology/radiology_details_page.dart index c5921438..235aacf6 100644 --- a/lib/screens/patients/profile/radiology/radiology_details_page.dart +++ b/lib/screens/patients/profile/radiology/radiology_details_page.dart @@ -43,6 +43,8 @@ class RadiologyDetailsPage extends StatelessWidget { arrivalType: arrivalType ?? "0", appointmentDate: finalRadiology.orderDate, doctorName: finalRadiology.doctorName, + clinic: finalRadiology.clinicDescription, + branch: finalRadiology.projectName, profileUrl: finalRadiology.doctorImageURL, invoiceNO: finalRadiology.invoiceNo.toString(), ), @@ -54,6 +56,7 @@ class RadiologyDetailsPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( + width: double.maxFinite, margin: EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.white, diff --git a/lib/screens/patients/profile/radiology/radiology_home_page.dart b/lib/screens/patients/profile/radiology/radiology_home_page.dart index 5cb14b8a..d688710f 100644 --- a/lib/screens/patients/profile/radiology/radiology_home_page.dart +++ b/lib/screens/patients/profile/radiology/radiology_home_page.dart @@ -123,6 +123,7 @@ class RadiologyHomePage extends StatelessWidget { profileUrl: model.radiologyList[index].doctorImageURL, invoiceNO: '${model.radiologyList[index].invoiceNo}', branch: '${model.radiologyList[index].projectName}', + clinic: model.radiologyList[index].clinicDescription, appointmentDate: model.radiologyList[index].orderDate, ), )), diff --git a/lib/screens/prescription/prescription_items_page.dart b/lib/screens/prescription/prescription_items_page.dart index f2bbe274..a92f5365 100644 --- a/lib/screens/prescription/prescription_items_page.dart +++ b/lib/screens/prescription/prescription_items_page.dart @@ -36,6 +36,7 @@ class PrescriptionItemsPage extends StatelessWidget { patientType: patientType??"0", arrivalType: arrivalType??"0", clinic: prescriptions.clinicDescription, + branch: prescriptions.name, isPrescriptions: true, appointmentDate: DateUtils.getDateTimeFromServerFormat(prescriptions.appointmentDate), doctorName: prescriptions.doctorName, diff --git a/lib/screens/procedures/procedure_screen.dart b/lib/screens/procedures/procedure_screen.dart index 9e44df17..646665b7 100644 --- a/lib/screens/procedures/procedure_screen.dart +++ b/lib/screens/procedures/procedure_screen.dart @@ -29,121 +29,119 @@ class ProcedureScreen extends StatelessWidget { builder: (BuildContext context, ProcedureViewModel model, Widget child) => AppScaffold( isShowAppBar: true, + baseViewModel: model, appBar: PatientProfileHeaderNewDesignAppBar( patient, arrivalType ?? '0', patientType), - body: NetworkBaseView( - baseViewModel: model, - child: SingleChildScrollView( - child: Container( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox( - height: 12, - ), - Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts( - 'Order Test or', - style: "caption2", - color: Colors.black, - fontSize: 13, - ), - Texts( - 'Procedure', - bold: true, - fontSize: 22, - ), - ], - ), + body: SingleChildScrollView( + child: Container( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 12, + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts( + 'Order Test or', + style: "caption2", + color: Colors.black, + fontSize: 13, + ), + Texts( + 'Procedure', + bold: true, + fontSize: 22, + ), + ], ), - if (patientType != null && patientType == '7' && patient.patientStatusType == 43) - InkWell( - onTap: () { - addSelectedProcedure(context, model, patient); - }, - child: Container( - width: double.maxFinite, - height: 140, - margin: EdgeInsets.all(10), - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.circular(10), - ), - child: Center( - child: Container( - height: 90, - child: Column( - children: [ - Container( - height: 40, - width: 40, - decoration: BoxDecoration( - color: Colors.grey[600], - borderRadius: BorderRadius.circular(10), - ), - child: Center( - child: Icon( - Icons.add, - color: Colors.white, - ), - ), + ), + if (patientType != null && patientType == '7' && patient.patientStatusType == 43) + InkWell( + onTap: () { + addSelectedProcedure(context, model, patient); + }, + child: Container( + width: double.maxFinite, + height: 140, + margin: EdgeInsets.all(10), + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.circular(10), + ), + child: Center( + child: Container( + height: 90, + child: Column( + children: [ + Container( + height: 40, + width: 40, + decoration: BoxDecoration( + color: Colors.grey[600], + borderRadius: BorderRadius.circular(10), ), - SizedBox( - height: 10, + child: Center( + child: Icon( + Icons.add, + color: Colors.white, + ), ), - Texts( - 'Add More Procedure', - color: Colors.grey[600], - fontWeight: FontWeight.w600, - ) - ], - ), + ), + SizedBox( + height: 10, + ), + Texts( + 'Add More Procedure', + color: Colors.grey[600], + fontWeight: FontWeight.w600, + ) + ], ), ), ), ), - if (model.procedureList.isNotEmpty) - ...List.generate( - model.procedureList[0].rowcount, - (index) => ProcedureCard( - categoryID: - model.procedureList[0].entityList[index].categoryID, - entityList: model.procedureList[0].entityList[index], - onTap: () { - if (model.procedureList[0].entityList[index].categoryID == - 2 || - model.procedureList[0].entityList[index].categoryID == 4) - updateProcedureForm(context, - model: model, - patient: patient, - remarks: model - .procedureList[0].entityList[index].remarks, - orderType: model.procedureList[0] - .entityList[index].orderType - .toString(), - orderNo: model - .procedureList[0].entityList[index].orderNo, - procedureName: model.procedureList[0] - .entityList[index].procedureName, - categoreId: model.procedureList[0] - .entityList[index].categoryID - .toString(), - procedureId: model.procedureList[0] - .entityList[index].procedureId, - limetNo: model.procedureList[0] - .entityList[index].lineItemNo); - // } else - // helpers.showErrorToast( - // 'You Cant Update This Procedure'); - }, - ), + ), + if (model.procedureList.isNotEmpty) + ...List.generate( + model.procedureList[0].rowcount, + (index) => ProcedureCard( + categoryID: + model.procedureList[0].entityList[index].categoryID, + entityList: model.procedureList[0].entityList[index], + onTap: () { + if (model.procedureList[0].entityList[index].categoryID == + 2 || + model.procedureList[0].entityList[index].categoryID == 4) + updateProcedureForm(context, + model: model, + patient: patient, + remarks: model + .procedureList[0].entityList[index].remarks, + orderType: model.procedureList[0] + .entityList[index].orderType + .toString(), + orderNo: model + .procedureList[0].entityList[index].orderNo, + procedureName: model.procedureList[0] + .entityList[index].procedureName, + categoreId: model.procedureList[0] + .entityList[index].categoryID + .toString(), + procedureId: model.procedureList[0] + .entityList[index].procedureId, + limetNo: model.procedureList[0] + .entityList[index].lineItemNo); + // } else + // helpers.showErrorToast( + // 'You Cant Update This Procedure'); + }, ), - ], - ), + ), + ], ), ), ), 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 index bfe8fcad..0b80c788 100644 --- 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 @@ -171,7 +171,7 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget Container( child: AppText( convertDateFormat2( - patient.appointmentDate.toString() ?? ''), + patient.appointmentDate ?? ''), fontSize: 1.5 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), @@ -281,7 +281,7 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget date.day.toString().padLeft(2, '0'); } - return newDate.toString(); + return newDate??''; } isToday(date) { diff --git a/lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart b/lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart index ddb52e84..3031b0d1 100644 --- a/lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart +++ b/lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart @@ -380,7 +380,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre fontWeight: FontWeight.w600, fontSize: 12, ), - if (orderNo != null && !isPrescriptions) + if (orderNo != null ) Row( children: [ Texts( @@ -393,7 +393,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre ) ], ), - if (invoiceNO != null && !isPrescriptions) + if (invoiceNO != null ) Row( children: [ Texts( @@ -407,7 +407,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre ) ], ), - if(isPrescriptions && branch!=null) + if( branch!=null) Row( children: [ Texts( @@ -421,7 +421,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre ) ], ), - if(isPrescriptions) + if(clinic!=null) Row( children: [ Texts( diff --git a/lib/widgets/shared/doctor_card.dart b/lib/widgets/shared/doctor_card.dart index 9ba055fc..df5cbe33 100644 --- a/lib/widgets/shared/doctor_card.dart +++ b/lib/widgets/shared/doctor_card.dart @@ -82,7 +82,7 @@ class DoctorCard extends StatelessWidget { ], ), Row( - crossAxisAlignment: CrossAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( child: LargeAvatar( @@ -93,74 +93,81 @@ class DoctorCard extends StatelessWidget { height: 55, ), Expanded( - flex: 4, - child: Container( - margin: EdgeInsets.all(10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (orderNo != null && !isPrescriptions) - Row( - children: [ - Texts( - 'order No:', - color: Colors.grey[500], - fontSize: 14, - ), - Texts( - orderNo ?? '', - fontSize: 14, - ) - ], - ), - if (invoiceNO != null && !isPrescriptions) - Row( + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: Container( + margin: EdgeInsets.all(10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Texts( - 'Invoice:', - fontSize: 14, - color: Colors.grey[500], + if (orderNo != null && !isPrescriptions) + Row( + children: [ + Texts( + 'order No:', + color: Colors.grey[500], + fontSize: 14, + ), + Texts( + orderNo ?? '', + fontSize: 14, + ) + ], + ), + if (invoiceNO != null && !isPrescriptions) + Row( + children: [ + Texts( + 'Invoice:', + fontSize: 14, + color: Colors.grey[500], + ), + Texts( + invoiceNO, + fontSize: 14, + ) + ], + ), + if(clinic!=null) + Row( + children: [ + Texts( + 'Clinic: ', + color: Colors.grey[500], + fontSize: 14, + ), + Texts( + clinic, + fontSize: 14, + ) + ], ), - Texts( - invoiceNO, - fontSize: 14, + if(branch!=null) + Row( + children: [ + Texts( + 'Branch: ', + fontSize: 14, + color: Colors.grey[500], + ), + Texts( + branch, + fontSize: 14, + ) + ], ) - ], - ), - if(isPrescriptions) - Row( - children: [ - Texts( - 'Clinic: ', - color: Colors.grey[500], - fontSize: 14, - ), - Texts( - clinic, - fontSize: 14, - ) - ], - ), - if(branch!=null) - Row( - children: [ - Texts( - 'Branch: ', - fontSize: 14, - color: Colors.grey[500], - ), - Texts( - branch, - fontSize: 14, - ) - ], - ) - ]), + ]), + ), + ), + Icon( + EvaIcons.eye, + ) + ], ), ), - Icon( - EvaIcons.eye, - ) + ], ), ], diff --git a/lib/widgets/shared/network_base_view.dart b/lib/widgets/shared/network_base_view.dart index 139b85e8..adba46cd 100644 --- a/lib/widgets/shared/network_base_view.dart +++ b/lib/widgets/shared/network_base_view.dart @@ -1,5 +1,6 @@ import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; +import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -32,8 +33,13 @@ class NetworkBaseView extends StatelessWidget { break; case ViewState.Error: return Center( - child: DrAppEmbeddedError( - error: baseViewModel.error, + child: Column( + children: [ + SizedBox(height: 100,), + Image.asset('assets/images/no-data.png',height: 250), + Texts(baseViewModel.error??'') + + ], ), ); break;