From df3b51b9577ef7949ce5e2ed82b8045e23522ca7 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 7 Apr 2021 18:34:16 +0300 Subject: [PATCH] update allergies --- .../subjective/update_allergies_widget.dart | 44 ++++++-- ..._key_checkbox_search_allergies_widget.dart | 101 ++++++++++++------ 2 files changed, 101 insertions(+), 44 deletions(-) diff --git a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart index b7f5187e..a1fadef0 100644 --- a/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart +++ b/lib/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart @@ -24,7 +24,7 @@ import 'package:provider/provider.dart'; import '../custom_validation_error.dart'; class UpdateAllergiesWidget extends StatefulWidget { - final List myAllergiesList; + List myAllergiesList; UpdateAllergiesWidget({Key key, this.myAllergiesList}); @@ -36,6 +36,11 @@ class _UpdateAllergiesWidgetState extends State { @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); + changeAllState() { + setState(() { + + }); + } return Column( children: [ @@ -48,7 +53,7 @@ class _UpdateAllergiesWidgetState extends State { fontSize: 13.5, borderRadius: 12, onTapTextFields: () { - openAllergiesList(context); + openAllergiesList(context, changeAllState); }, readOnly: true, suffixIcon: EvaIcons.plusCircleOutline, @@ -188,15 +193,23 @@ class _UpdateAllergiesWidgetState extends State { print(allergy); } - openAllergiesList(BuildContext context) { + openAllergiesList(BuildContext context, Function changeParentState) { showModalBottomSheet( backgroundColor: Colors.white, isScrollControlled: true, + isDismissible: false, context: context, builder: (context) { return AddAllergies( myAllergiesList: widget.myAllergiesList, - addAllergiesFun: (){} + addAllergiesFun: (List mySelectedAllergy){ + setState(() { + widget.myAllergiesList = [...mySelectedAllergy]; + }); + changeParentState(); + Navigator.of(context).pop(); + + } ); }); } @@ -358,10 +371,11 @@ class _AddAllergiesState extends State { addAllergy: (MySelectedAllergy mySelectedAllergy){ AddAllergyLocally(mySelectedAllergy); }, - addSelectedAllergy: (){ - // widget.addSelectedHistories(); - }, + addSelectedAllergy: ()=> + widget.addAllergiesFun(myAllergiesListLocal) + , isServiceSelected: (master) =>isServiceSelected(master), + getServiceSelectedAllergy: (master)=>getSelectedAllergy(master), ), ), ), @@ -564,17 +578,29 @@ class _AddAllergiesState extends State { } isServiceSelected(MasterKeyModel masterKey) { - Iterable history = + Iterable allergy = myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy.id && masterKey.typeId == element.selectedAllergy.typeId && element.isChecked); - if (history.length > 0) { + if (allergy.length > 0) { return true; } return false; } + MySelectedAllergy getSelectedAllergy(MasterKeyModel masterKey) { + Iterable allergy = + myAllergiesListLocal.where((element) => + masterKey.id == element.selectedAllergy.id && + masterKey.typeId == element.selectedAllergy.typeId && + element.isChecked); + if (allergy.length > 0) { + return allergy.first; + } + return null; + } + AddAllergyLocally(MySelectedAllergy mySelectedAllergy) { if ( mySelectedAllergy.selectedAllergy == null) { diff --git a/lib/widgets/shared/master_key_checkbox_search_allergies_widget.dart b/lib/widgets/shared/master_key_checkbox_search_allergies_widget.dart index 99a012c9..dbc01d42 100644 --- a/lib/widgets/shared/master_key_checkbox_search_allergies_widget.dart +++ b/lib/widgets/shared/master_key_checkbox_search_allergies_widget.dart @@ -16,10 +16,12 @@ import 'dialogs/master_key_dailog.dart'; class MasterKeyCheckboxSearchAllergiesWidget extends StatefulWidget { final SOAPViewModel model; - final Function addSelectedAllergy; + final Function () addSelectedAllergy; final Function(MasterKeyModel) removeAllergy; final Function(MySelectedAllergy mySelectedAllergy) addAllergy; final bool Function(MasterKeyModel) isServiceSelected; + final MySelectedAllergy Function(MasterKeyModel) getServiceSelectedAllergy; + final List masterList; final String buttonName; final String hintSearchText; @@ -33,7 +35,8 @@ class MasterKeyCheckboxSearchAllergiesWidget extends StatefulWidget { this.addAllergy, this.isServiceSelected, this.buttonName, - this.hintSearchText}) + this.hintSearchText, + this.getServiceSelectedAllergy}) : super(key: key); @override @@ -89,13 +92,29 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState child: ListView.builder( itemCount: items.length, itemBuilder: (context, index) { - TextEditingController remarkController = TextEditingController(text: items[index].remarks); - TextEditingController severityController = TextEditingController(text: _selectedAllergySeverity!= null ?projectViewModel - .isArabic - ? _selectedAllergySeverity - .nameAr - : _selectedAllergySeverity - .nameEn: null); + bool isSelected = widget.isServiceSelected( + items[index]); + MySelectedAllergy mySelectedAllergy; + if (isSelected) { + mySelectedAllergy = widget + .getServiceSelectedAllergy( + items[index]); + } + TextEditingController remarkController = TextEditingController( + text: isSelected ? mySelectedAllergy + .remark : null); + TextEditingController severityController = TextEditingController( + text: isSelected ? mySelectedAllergy + .selectedAllergySeverity != null + ? projectViewModel + .isArabic + ? mySelectedAllergy + .selectedAllergySeverity + .nameAr + : mySelectedAllergy + .selectedAllergySeverity + .nameEn + : null : null); return Column( children: [ InkWell( @@ -104,18 +123,22 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState if (widget.isServiceSelected( items[index])) { widget - .removeAllergy(items[index]); + .removeAllergy( + items[index]); } else { // TODO add Allergy MySelectedAllergy - mySelectedAllergy = - new MySelectedAllergy( - selectedAllergy: - items[index], - selectedAllergySeverity: - _selectedAllergySeverity, remark: "fdfdf", isChecked: true); - widget.addAllergy(mySelectedAllergy); + mySelectedAllergy = + new MySelectedAllergy( + selectedAllergy: + items[index], + selectedAllergySeverity: + _selectedAllergySeverity, + remark: null, + isChecked: true); + widget.addAllergy( + mySelectedAllergy); } }); }, @@ -184,16 +207,9 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState okFunction: (selectedValue) { setState(() { - _selectedAllergySeverity = + mySelectedAllergy + .selectedAllergySeverity = selectedValue; - - severityController - .text = projectViewModel - .isArabic - ? _selectedAllergySeverity - .nameAr - : _selectedAllergySeverity - .nameEn; }); }, ); @@ -209,13 +225,15 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState } : null, hasLabelText: - severityController.text != - '' + mySelectedAllergy + .selectedAllergySeverity != + null ? true : false, showLabelText: true, hintText: - TranslationBase.of(context) + TranslationBase + .of(context) .selectSeverity, fontSize: 13.5, readOnly: true, @@ -226,7 +244,8 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState controller: severityController, validator: (value) { if (value == null) - return TranslationBase.of( + return TranslationBase + .of( context) .emptyMessage; else @@ -252,7 +271,8 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState ? true : false, showLabelText: true, - hintText: TranslationBase.of( + hintText: TranslationBase + .of( context) .remarks, fontSize: 13.5, @@ -260,10 +280,22 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState fontWeight: FontWeight.w600, maxLines: 25, minLines: 10, - controller: remarkController, + initialValue: isSelected + ? mySelectedAllergy + .remark : '', + // controller: remarkControlle + + onChanged: (value) { + if (isSelected) { + mySelectedAllergy + .remark = value; + }; + }, + validator: (value) { if (value == null) - return TranslationBase.of( + return TranslationBase + .of( context) .emptyMessage; else @@ -460,8 +492,7 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState ), if (widget.model.state == ViewState.Idle) AppButton( - title: widget.buttonName ?? - TranslationBase.of(context).addSelectedHistories, + title: "Add Selected Allergy", padding: 10, color: Color(0xFF359846), onPressed: () {