From a98e4047145a31c3611bc033cfa631eca25de8c1 Mon Sep 17 00:00:00 2001 From: Tamara Slosarek Date: Wed, 22 Nov 2023 14:56:41 +0100 Subject: [PATCH] feat(#668): use consumer on report page --- app/lib/common/models/userdata/userdata.dart | 10 +++++----- .../drug_list/drug_items/drug_checkbox_list.dart | 10 +++------- app/lib/report/pages/report.dart | 12 ++++++++++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/app/lib/common/models/userdata/userdata.dart b/app/lib/common/models/userdata/userdata.dart index 31ff88e5..e2a1f4a0 100644 --- a/app/lib/common/models/userdata/userdata.dart +++ b/app/lib/common/models/userdata/userdata.dart @@ -172,26 +172,26 @@ class UserData { } class ActiveDrugs extends ChangeNotifier { - List activeDrugs = []; + List names = []; Future _preserveAndNotify() async { - UserData.instance.activeDrugNames = activeDrugs; + UserData.instance.activeDrugNames = names; await UserData.save(); notifyListeners(); } Future setList(List drugNames) async { - activeDrugs = drugNames; + names = drugNames; await _preserveAndNotify(); } Future _add(String drugName) async { - activeDrugs.add(drugName); + names.add(drugName); await _preserveAndNotify(); } Future _remove(String drugName) async { - activeDrugs = activeDrugs.filter((name) => name != drugName).toList(); + names = names.filter((name) => name != drugName).toList(); await _preserveAndNotify(); } diff --git a/app/lib/common/widgets/drug_list/drug_items/drug_checkbox_list.dart b/app/lib/common/widgets/drug_list/drug_items/drug_checkbox_list.dart index 3ecda1d3..f1ca395e 100644 --- a/app/lib/common/widgets/drug_list/drug_items/drug_checkbox_list.dart +++ b/app/lib/common/widgets/drug_list/drug_items/drug_checkbox_list.dart @@ -1,10 +1,6 @@ import '../../../module.dart'; import 'utils.dart'; -bool isDrugSelected(Drug drug) { - return UserData.instance.activeDrugNames!.contains(drug.name); -} - List buildDrugCheckboxList( BuildContext context, List drugs, @@ -18,8 +14,8 @@ List buildDrugCheckboxList( final checkboxesEnabled = buildParams['checkboxesEnabled']; final sortedDrugs = List.from(drugs); sortedDrugs.sort((drugA, drugB) { - final drugASelected = isDrugSelected(drugA); - final drugBSelected = isDrugSelected(drugB); + final drugASelected = drugA.isActive(); + final drugBSelected = drugB.isActive(); if (drugASelected == drugBSelected) return drugA.name.compareTo(drugB.name); return drugASelected ? -1 : 1; }); @@ -27,7 +23,7 @@ List buildDrugCheckboxList( ...sortedDrugs.map( (drug) => CheckboxListTile( enabled: checkboxesEnabled, - value: isDrugSelected(drug), + value: drug.isActive(), onChanged: (value) => onCheckboxChange(drug, value), title: Text(formatDrugName(drug, showDrugInteractionIndicator)), subtitle: (drug.annotations.brandNames.isNotEmpty) ? diff --git a/app/lib/report/pages/report.dart b/app/lib/report/pages/report.dart index d5b6a065..8213a0c5 100644 --- a/app/lib/report/pages/report.dart +++ b/app/lib/report/pages/report.dart @@ -1,11 +1,19 @@ +import 'package:provider/provider.dart'; + import '../../common/module.dart'; import '../../common/utilities/guideline_utils.dart'; class ReportPage extends StatelessWidget { @override Widget build(BuildContext context) { - final hasActiveInhibitors = UserData.instance.activeDrugNames != null && - UserData.instance.activeDrugNames!.any(isInhibitor); + return Consumer( + builder: (context, activeDrugs, child) => + _buildReportPage(context, activeDrugs) + ); + } + + Widget _buildReportPage(BuildContext context, ActiveDrugs activeDrugs) { + final hasActiveInhibitors = activeDrugs.names.any(isInhibitor); final guidelineGenes = getGuidelineGenes(); final notTestedString = context.l10n.general_not_tested;