routing added
parent
e3ccf398bc
commit
8bf2ca3a63
@ -0,0 +1,154 @@
|
||||
import 'package:autocomplete_textfield/autocomplete_textfield.dart';
|
||||
import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.dart';
|
||||
import 'package:doctor_app_flutter/core/model/SOAP/selected_items/my_selected_allergy.dart';
|
||||
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
|
||||
import 'package:doctor_app_flutter/screens/base/base_view.dart';
|
||||
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
|
||||
import 'package:doctor_app_flutter/utils/utils.dart';
|
||||
import 'package:doctor_app_flutter/widgets/bottom_sheet/custom_bottom_sheet_container.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../../soap_update/shared_soap_widgets/bottom_sheet_title.dart';
|
||||
import 'master_key_checkbox_search_allergies_widget.dart';
|
||||
|
||||
class AddAllergies extends StatefulWidget {
|
||||
final Function? addAllergiesFun;
|
||||
final List<MySelectedAllergy>? myAllergiesList;
|
||||
|
||||
const AddAllergies({Key? key, this.addAllergiesFun, this.myAllergiesList}) : super(key: key);
|
||||
|
||||
@override
|
||||
_AddAllergiesState createState() => _AddAllergiesState();
|
||||
}
|
||||
|
||||
class _AddAllergiesState extends State<AddAllergies> {
|
||||
List<MasterKeyModel> allergiesList = [];
|
||||
List<MasterKeyModel> allergySeverityList = [];
|
||||
List<MySelectedAllergy> myAllergiesListLocal = [];
|
||||
|
||||
@override
|
||||
initState() {
|
||||
super.initState();
|
||||
myAllergiesListLocal = [...?widget.myAllergiesList];
|
||||
}
|
||||
|
||||
GlobalKey key = new GlobalKey<AutoCompleteTextFieldState<MasterKeyModel>>();
|
||||
bool isFormSubmitted = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
// baseViewModel: model,
|
||||
isShowAppBar: true,
|
||||
appBar: BottomSheetTitle(
|
||||
title: TranslationBase.of(context).addAllergies,
|
||||
),
|
||||
body: Center(
|
||||
child: Container(
|
||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
SizedBox(
|
||||
height: 16,
|
||||
),
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 0.9,
|
||||
child: Center(
|
||||
child: BaseView<SOAPViewModel>(
|
||||
onModelReady: (model) async {},
|
||||
builder: (_, model, w) {
|
||||
return MasterKeyCheckboxSearchAllergiesWidget(
|
||||
model: model,
|
||||
masterList: model.allergiesList,
|
||||
removeAllergy: (master) {
|
||||
// setState(() {
|
||||
// removeAllergyFromLocalList(master);
|
||||
// });
|
||||
},
|
||||
addAllergy: (MySelectedAllergy mySelectedAllergy) {
|
||||
addAllergyLocally(mySelectedAllergy);
|
||||
},
|
||||
addSelectedAllergy: () {
|
||||
setState(() {
|
||||
widget.addAllergiesFun!(myAllergiesListLocal);
|
||||
});
|
||||
},
|
||||
isServiceSelected: (master) => isServiceSelected(master),
|
||||
getServiceSelectedAllergy: (master) => getSelectedAllergy(master),
|
||||
);
|
||||
}),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: MediaQuery.of(context).size.height * 0.11,
|
||||
),
|
||||
]),
|
||||
),
|
||||
),
|
||||
bottomSheet:
|
||||
// model.state != ViewState.Idle
|
||||
// ?
|
||||
// Container(
|
||||
// height: 0,
|
||||
// )
|
||||
// :
|
||||
CustomBottomSheetContainer(
|
||||
label: TranslationBase.of(context).addAllergies,
|
||||
onTap: () {
|
||||
setState(() {
|
||||
widget.addAllergiesFun!(myAllergiesListLocal);
|
||||
});
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
isServiceSelected(MasterKeyModel masterKey) {
|
||||
Iterable<MySelectedAllergy> allergy =
|
||||
myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy!.id && masterKey.typeId == element.selectedAllergy!.typeId && element.isChecked);
|
||||
if (allergy.length > 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
removeAllergyFromLocalList(MasterKeyModel masterKey) {
|
||||
myAllergiesListLocal.removeWhere((element) => element.selectedAllergy!.id == masterKey.id);
|
||||
}
|
||||
|
||||
MySelectedAllergy getSelectedAllergy(MasterKeyModel masterKey) {
|
||||
Iterable<MySelectedAllergy> allergy =
|
||||
myAllergiesListLocal.where((element) => masterKey.id == element.selectedAllergy!.id && masterKey.typeId == element.selectedAllergy!.typeId && element.isChecked);
|
||||
if (allergy.length > 0) {
|
||||
return allergy.first;
|
||||
}
|
||||
return MySelectedAllergy();
|
||||
}
|
||||
|
||||
addAllergyLocally(MySelectedAllergy mySelectedAllergy) {
|
||||
if (mySelectedAllergy.selectedAllergy == null) {
|
||||
Utils.showErrorToast(TranslationBase.of(context).requiredMsg);
|
||||
} else {
|
||||
setState(() {
|
||||
List<MySelectedAllergy> allergy =
|
||||
// ignore: missing_return
|
||||
myAllergiesListLocal.where((element) => mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id).toList();
|
||||
|
||||
if (allergy.isEmpty) {
|
||||
myAllergiesListLocal.add(mySelectedAllergy);
|
||||
} else {
|
||||
allergy.first.selectedAllergy = mySelectedAllergy.selectedAllergy;
|
||||
allergy.first.selectedAllergySeverity = mySelectedAllergy.selectedAllergySeverity;
|
||||
allergy.first.remark = mySelectedAllergy.remark;
|
||||
allergy.first.isChecked = mySelectedAllergy.isChecked;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,180 @@
|
||||
import 'package:doctor_app_flutter/config/size_config.dart';
|
||||
import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.dart';
|
||||
import 'package:doctor_app_flutter/core/model/SOAP/selected_items/my_selected_allergy.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/utils/translations_delegate_base_utils.dart';
|
||||
import 'package:doctor_app_flutter/utils/utils.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
|
||||
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../soap_update/soap_utils.dart';
|
||||
|
||||
|
||||
class AddAllergiesItem extends StatefulWidget {
|
||||
final SOAPViewModel? model;
|
||||
final Function(MasterKeyModel)? removeAllergy;
|
||||
final Function(MySelectedAllergy mySelectedAllergy)? addAllergy;
|
||||
final bool Function(MasterKeyModel)? isServiceSelected;
|
||||
final MySelectedAllergy Function(MasterKeyModel)? getServiceSelectedAllergy;
|
||||
final MasterKeyModel? item;
|
||||
|
||||
const AddAllergiesItem({Key? key, this.model, this.removeAllergy, this.addAllergy, this.isServiceSelected, this.getServiceSelectedAllergy, this.item}) : super(key: key);
|
||||
|
||||
@override
|
||||
_AddAllergiesItemState createState() => _AddAllergiesItemState();
|
||||
}
|
||||
|
||||
class _AddAllergiesItemState extends State<AddAllergiesItem> {
|
||||
MasterKeyModel _selectedAllergySeverity = MasterKeyModel();
|
||||
bool isSubmitted = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ProjectViewModel projectViewModel = Provider.of(context);
|
||||
|
||||
bool isSelected = widget.isServiceSelected!(widget.item!);
|
||||
MySelectedAllergy mySelectedAllergy = MySelectedAllergy();
|
||||
if (isSelected) {
|
||||
mySelectedAllergy = widget.getServiceSelectedAllergy!(widget.item!);
|
||||
}
|
||||
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 HeaderBodyExpandableNotifier(
|
||||
headerWidget: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Checkbox(
|
||||
value: widget.isServiceSelected!(widget.item!),
|
||||
activeColor: Colors.red[800],
|
||||
onChanged: (bool? newValue) {
|
||||
onTapItem();
|
||||
}),
|
||||
InkWell(
|
||||
onTap: onTapItem,
|
||||
child: Container(
|
||||
child: AppText(
|
||||
projectViewModel.isArabic
|
||||
? widget.item!.nameAr != ""
|
||||
? widget.item!.nameAr!
|
||||
: widget.item!.nameEn!
|
||||
: widget.item!.nameEn!,
|
||||
color: Color(0xFF575757),
|
||||
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * (SizeConfig.isWidthLarge ? 3 : 3.8),
|
||||
letterSpacing: -0.56,
|
||||
),
|
||||
width: MediaQuery.of(context).size.width * 0.55,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
InkWell(
|
||||
onTap: () {
|
||||
if (mySelectedAllergy != null) {
|
||||
setState(() {
|
||||
mySelectedAllergy.isExpanded = mySelectedAllergy.isExpanded == null ? false : true;
|
||||
});
|
||||
}
|
||||
},
|
||||
child: Icon(
|
||||
(mySelectedAllergy != null ? mySelectedAllergy.isExpanded! : false) ? EvaIcons.arrowIosUpwardOutline : EvaIcons.arrowIosDownwardOutline,
|
||||
color: Color(0xFF575757),
|
||||
size: 20,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
bodyWidget: Center(
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 0.9,
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
AppTextFieldCustom(
|
||||
onClick: widget.model!.allergySeverityList != null
|
||||
? () {
|
||||
MasterKeyDailog dialog = MasterKeyDailog(
|
||||
list: widget.model!.allergySeverityList,
|
||||
selectedValue: mySelectedAllergy.selectedAllergySeverity!,
|
||||
okText: TranslationBase.of(context).ok,
|
||||
okFunction: (selectedValue) {
|
||||
setState(() {
|
||||
mySelectedAllergy.selectedAllergySeverity = selectedValue;
|
||||
});
|
||||
},
|
||||
);
|
||||
showDialog(
|
||||
barrierDismissible: false,
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return dialog;
|
||||
},
|
||||
);
|
||||
}
|
||||
: () {},
|
||||
isTextFieldHasSuffix: true,
|
||||
hintText: TranslationBase.of(context).selectSeverity + "*",
|
||||
enabled: false,
|
||||
maxLines: 1,
|
||||
minLines: 1,
|
||||
height: Utils.getTextFieldHeight(),
|
||||
validationError: mySelectedAllergy != null && mySelectedAllergy.selectedAllergySeverity == null && mySelectedAllergy.hasValidationError!
|
||||
? TranslationBase.of(context).severityValidationError
|
||||
: "",
|
||||
controller: severityController,
|
||||
onChanged: (value) {},
|
||||
onFieldSubmitted: () {},
|
||||
),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
AppTextFieldCustom(
|
||||
hintText: TranslationBase.of(context).remarks,
|
||||
controller: remarkController,
|
||||
maxLines: 25,
|
||||
minLines: 3,
|
||||
hasBorder: true,
|
||||
onChanged: (value) {
|
||||
mySelectedAllergy.remark = value;
|
||||
},
|
||||
inputType: TextInputType.multiline,
|
||||
onClick: () {},
|
||||
onFieldSubmitted: () {},
|
||||
),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
isExpand: mySelectedAllergy != null ? mySelectedAllergy.isExpanded! : false,
|
||||
);
|
||||
}
|
||||
|
||||
onTapItem() {
|
||||
setState(() {
|
||||
if (widget.isServiceSelected!(widget.item!)) {
|
||||
widget.removeAllergy!(widget.item!);
|
||||
} else {
|
||||
MySelectedAllergy mySelectedAllergy = SoapUtils.generateMySelectedAllergy(allergy: widget.item, allergySeverity: _selectedAllergySeverity, remark: null, isChecked: true, isExpanded: true);
|
||||
widget.addAllergy!(mySelectedAllergy);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,165 @@
|
||||
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
|
||||
import 'package:doctor_app_flutter/core/enum/view_state.dart';
|
||||
import 'package:doctor_app_flutter/core/model/SOAP/master_key_model.dart';
|
||||
import 'package:doctor_app_flutter/core/model/SOAP/selected_items/my_selected_allergy.dart';
|
||||
import 'package:doctor_app_flutter/core/viewModel/SOAP_view_model.dart';
|
||||
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
|
||||
import 'package:doctor_app_flutter/utils/utils.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'allergies_item.dart';
|
||||
|
||||
class MasterKeyCheckboxSearchAllergiesWidget extends StatefulWidget {
|
||||
final SOAPViewModel model;
|
||||
final Function() addSelectedAllergy;
|
||||
final Function(MasterKeyModel) removeAllergy;
|
||||
final Function(MySelectedAllergy mySelectedAllergy) addAllergy;
|
||||
final bool Function(MasterKeyModel) isServiceSelected;
|
||||
final MySelectedAllergy Function(MasterKeyModel) getServiceSelectedAllergy;
|
||||
|
||||
final List<MasterKeyModel> masterList;
|
||||
final String? buttonName;
|
||||
final String? hintSearchText;
|
||||
|
||||
MasterKeyCheckboxSearchAllergiesWidget(
|
||||
{Key? key,
|
||||
required this.model,
|
||||
required this.addSelectedAllergy,
|
||||
required this.removeAllergy,
|
||||
required this.masterList,
|
||||
required this.addAllergy,
|
||||
required this.isServiceSelected,
|
||||
this.buttonName,
|
||||
this.hintSearchText,
|
||||
required this.getServiceSelectedAllergy})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
_MasterKeyCheckboxSearchAllergiesWidgetState createState() => _MasterKeyCheckboxSearchAllergiesWidgetState();
|
||||
}
|
||||
|
||||
class _MasterKeyCheckboxSearchAllergiesWidgetState extends State<MasterKeyCheckboxSearchAllergiesWidget> {
|
||||
List<MasterKeyModel> items = [];
|
||||
|
||||
TextEditingController filteredSearchController = TextEditingController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
items.addAll(widget.masterList);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
child: Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Container(
|
||||
height: Utils.getTextFieldHeight(),
|
||||
child: Center(
|
||||
child: Container(
|
||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
|
||||
child: Column(
|
||||
children: [
|
||||
AppTextFieldCustom(
|
||||
hintText: TranslationBase.of(context).selectAllergy,
|
||||
isTextFieldHasSuffix: true,
|
||||
hasBorder: false,
|
||||
controller: filteredSearchController,
|
||||
onChanged: (value) {
|
||||
// filterSearchResults(value);
|
||||
},
|
||||
onFieldSubmitted: () {
|
||||
|
||||
// widget.model.getMasterLookup(
|
||||
// MasterKeysService.Allergies,
|
||||
// searchKey: filteredSearchController.text);
|
||||
// widget.model.getMasterLookup(
|
||||
// MasterKeysService.AllergySeverity,
|
||||
// searchKey: "");
|
||||
},
|
||||
// onFieldSubmitted: (value) {
|
||||
// widget.model.getMasterLookup(MasterKeysService.Allergies!, searchKey: filteredSearchController.text!);
|
||||
// widget.model.getMasterLookup(MasterKeysService.AllergySeverity, searchKey: "");
|
||||
// },
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(
|
||||
Icons.search,
|
||||
color: Colors.black,
|
||||
),
|
||||
onPressed: () {
|
||||
|
||||
widget.model.getMasterLookup(MasterKeysService.Allergies, searchKey: filteredSearchController.text);
|
||||
widget.model.getMasterLookup(MasterKeysService.AllergySeverity, searchKey: "");
|
||||
},
|
||||
),
|
||||
),
|
||||
DividerWithSpacesAround(),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
Expanded(
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 0.9,
|
||||
child: Container(
|
||||
height: MediaQuery.of(context).size.height * 0.60,
|
||||
child: widget.model.state == ViewState.Idle
|
||||
? ListView.builder(
|
||||
itemCount: widget.model.allergiesList.length,
|
||||
itemBuilder: (context, index) {
|
||||
return AddAllergiesItem(
|
||||
item: widget.model.allergiesList[index],
|
||||
model: widget.model,
|
||||
removeAllergy: widget.removeAllergy,
|
||||
addAllergy: widget.addAllergy,
|
||||
isServiceSelected: widget.isServiceSelected,
|
||||
getServiceSelectedAllergy: widget.getServiceSelectedAllergy,
|
||||
);
|
||||
},
|
||||
)
|
||||
: widget.model.state == ViewState.Busy
|
||||
? Center(child: CircularProgressIndicator())
|
||||
: Container(),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void filterSearchResults(String query) {
|
||||
List<MasterKeyModel> dummySearchList = [];
|
||||
dummySearchList.addAll(widget.masterList);
|
||||
if (query.isNotEmpty) {
|
||||
List<MasterKeyModel> dummyListData = [];
|
||||
dummySearchList.forEach((items) {
|
||||
if (items.nameAr!.toLowerCase().contains(query.toLowerCase()) || items.nameEn!.toLowerCase().contains(query.toLowerCase())) {
|
||||
dummyListData.add(items);
|
||||
}
|
||||
});
|
||||
setState(() {
|
||||
items.clear();
|
||||
items.addAll(dummyListData);
|
||||
});
|
||||
return;
|
||||
} else {
|
||||
setState(() {
|
||||
items.clear();
|
||||
items.addAll(widget.masterList);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,193 @@
|
||||
import 'package:doctor_app_flutter/config/size_config.dart';
|
||||
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
|
||||
import 'package:doctor_app_flutter/core/model/SOAP/selected_items/my_selected_allergy.dart';
|
||||
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/remark_text.dart';
|
||||
import 'package:doctor_app_flutter/screens/patients/profile/soap_update/shared_soap_widgets/remove_button.dart';
|
||||
import 'package:doctor_app_flutter/utils/utils.dart';
|
||||
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../soap_update/shared_soap_widgets/SOAP_open_items.dart';
|
||||
import 'add_allergies.dart';
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class UpdateAllergiesWidget extends StatefulWidget {
|
||||
List<MySelectedAllergy>? myAllergiesList;
|
||||
|
||||
UpdateAllergiesWidget({Key? key, this.myAllergiesList});
|
||||
|
||||
@override
|
||||
_UpdateAllergiesWidgetState createState() => _UpdateAllergiesWidgetState();
|
||||
}
|
||||
|
||||
class _UpdateAllergiesWidgetState extends State<UpdateAllergiesWidget> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ProjectViewModel projectViewModel = Provider.of(context);
|
||||
changeAllState() {
|
||||
setState(() {
|
||||
print(widget.myAllergiesList);
|
||||
});
|
||||
}
|
||||
|
||||
return Column(
|
||||
children: [
|
||||
SOAPOpenItems(
|
||||
label: "${TranslationBase.of(context).addAllergies}",
|
||||
onTap: () {
|
||||
openAllergiesList(context, changeAllState, removeAllergy);
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Container(
|
||||
margin: EdgeInsets.only(left: 15, right: 15, top: 15),
|
||||
child: Column(
|
||||
children: widget.myAllergiesList!.map((selectedAllergy) {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
AppText(
|
||||
projectViewModel.isArabic ? selectedAllergy.selectedAllergy!.nameAr! : selectedAllergy.selectedAllergy!.nameEn!.toUpperCase(),
|
||||
textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough,
|
||||
bold: true,
|
||||
color: Color(0xFF2B353E),
|
||||
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3.5,
|
||||
fontWeight: FontWeight.w700,
|
||||
letterSpacing: -0.48,
|
||||
// fontHeight:0.18 ,
|
||||
),
|
||||
AppText(
|
||||
projectViewModel.isArabic ? selectedAllergy.selectedAllergySeverity!.nameAr! : selectedAllergy.selectedAllergySeverity!.nameEn ?? ""!.toUpperCase(),
|
||||
textDecoration: selectedAllergy.isChecked! ? TextDecoration.none : TextDecoration.lineThrough,
|
||||
color: Color(0xFFCC9B14),
|
||||
fontSize: SizeConfig.getTextMultiplierBasedOnWidth() * 3,
|
||||
fontWeight: FontWeight.w700,
|
||||
letterSpacing: -0.48,
|
||||
),
|
||||
],
|
||||
),
|
||||
width: MediaQuery.of(context).size.width * 0.5,
|
||||
),
|
||||
if (selectedAllergy.isChecked)
|
||||
RemoveButton(
|
||||
onTap: () => removeAllergy(selectedAllergy),
|
||||
)
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
child: Row(
|
||||
children: [
|
||||
RemarkText(
|
||||
remark: selectedAllergy.remark ?? "",
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
DividerWithSpacesAround()
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 10,
|
||||
),
|
||||
],
|
||||
);
|
||||
}).toList()),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
removeAllergy(MySelectedAllergy mySelectedAllergy) {
|
||||
List<MySelectedAllergy> allergy =
|
||||
// ignore: missing_return
|
||||
widget.myAllergiesList!
|
||||
.where((element) => mySelectedAllergy.selectedAllergySeverity!.id == element.selectedAllergySeverity!.id && mySelectedAllergy.selectedAllergy!.id == element.selectedAllergy!.id)
|
||||
.toList();
|
||||
|
||||
if (allergy.length > 0) {
|
||||
if (allergy.first.isLocal) {
|
||||
setState(() {
|
||||
widget.myAllergiesList!.remove(allergy.first);
|
||||
});
|
||||
}
|
||||
setState(() {
|
||||
allergy[0].isChecked = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
openAllergiesList(BuildContext context, Function changeParentState, removeAllergy) {
|
||||
showModalBottomSheet(
|
||||
backgroundColor: Colors.white,
|
||||
isScrollControlled: true,
|
||||
isDismissible: false,
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return AddAllergies(
|
||||
myAllergiesList: widget.myAllergiesList,
|
||||
addAllergiesFun: (List<MySelectedAllergy> mySelectedAllergy) {
|
||||
bool isAllDataFilled = true;
|
||||
mySelectedAllergy.forEach((element) {
|
||||
if (element.selectedAllergySeverity == null) {
|
||||
element.hasValidationError = true;
|
||||
isAllDataFilled = false;
|
||||
}
|
||||
});
|
||||
if (isAllDataFilled) {
|
||||
mySelectedAllergy.forEach((element) {
|
||||
if (
|
||||
widget.myAllergiesList!.singleWhere(
|
||||
(it) => it.selectedAllergy!.id == element.selectedAllergy!.id,
|
||||
orElse: () => MySelectedAllergy(),
|
||||
).selectedAllergySeverity
|
||||
==
|
||||
null) {
|
||||
widget.myAllergiesList!.add(element);
|
||||
}
|
||||
});
|
||||
|
||||
/// remove items.
|
||||
List<MySelectedAllergy> removedList = [];
|
||||
widget.myAllergiesList!.forEach((element) {
|
||||
if (
|
||||
mySelectedAllergy.singleWhere(
|
||||
(it) => it.selectedAllergy!.id == element.selectedAllergy!.id,
|
||||
orElse: () => MySelectedAllergy(),
|
||||
)
|
||||
.selectedAllergySeverity ==
|
||||
null) {
|
||||
removedList.add(element);
|
||||
}
|
||||
});
|
||||
|
||||
removedList.forEach((element) {
|
||||
removeAllergy(element);
|
||||
});
|
||||
changeParentState();
|
||||
|
||||
Navigator.of(context).pop();
|
||||
} else {
|
||||
Utils.showErrorToast(TranslationBase.of(context).requiredMsg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue