From eff061b6e79d70fad2b579e32dccbaf79e203c31 Mon Sep 17 00:00:00 2001 From: Tamara Slosarek Date: Wed, 14 Feb 2024 19:33:37 +0100 Subject: [PATCH] feat(#685): add link to MedlinePlus to report --- app/lib/common/constants.dart | 3 +++ app/lib/common/widgets/page_description.dart | 22 ++++++++++++++++--- .../drug_selection/pages/drug_selection.dart | 2 +- app/lib/l10n/app_en.arb | 3 +++ app/lib/report/pages/report.dart | 20 ++++++++++++++++- 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/app/lib/common/constants.dart b/app/lib/common/constants.dart index 947c8081..bb02482d 100644 --- a/app/lib/common/constants.dart +++ b/app/lib/common/constants.dart @@ -33,6 +33,9 @@ Future sendEmail({ ); } +Future openFurtherGeneticInformation() async => + launchUrl(Uri.https('medlineplus.gov', '/genetics/understanding/')); + final cpicMaxCacheTime = Duration(days: 90); const maxCachedDrugs = 10; const cpicLookupUrl = diff --git a/app/lib/common/widgets/page_description.dart b/app/lib/common/widgets/page_description.dart index d48393c2..0a06d4a8 100644 --- a/app/lib/common/widgets/page_description.dart +++ b/app/lib/common/widgets/page_description.dart @@ -1,9 +1,12 @@ import '../module.dart'; class PageDescription extends StatelessWidget { - const PageDescription(this.text); + const PageDescription(this.widget); - final String text; + factory PageDescription.fromText(String text) => + PageDescription(PageDescriptionText(text)); + + final Widget widget; @override Widget build(BuildContext context) { @@ -12,7 +15,20 @@ class PageDescription extends StatelessWidget { left: PharMeTheme.smallSpace, right: PharMeTheme.smallSpace, bottom: PharMeTheme.smallSpace), - child: Text(text, style: PharMeTheme.textTheme.bodyMedium), + child: widget, ); } +} + +final pageDescriptionTextStyle = PharMeTheme.textTheme.bodyMedium; + +class PageDescriptionText extends StatelessWidget { + const PageDescriptionText(this.text); + + final String text; + + @override + Widget build(BuildContext context) { + return Text(text, style: pageDescriptionTextStyle); + } } \ No newline at end of file diff --git a/app/lib/drug_selection/pages/drug_selection.dart b/app/lib/drug_selection/pages/drug_selection.dart index 0f7d2c6b..ec6ec38a 100644 --- a/app/lib/drug_selection/pages/drug_selection.dart +++ b/app/lib/drug_selection/pages/drug_selection.dart @@ -28,7 +28,7 @@ class DrugSelectionPage extends HookWidget { title: context.l10n.drug_selection_header, body: Column( children: [ - if (concludesOnboarding) PageDescription( + if (concludesOnboarding) PageDescription.fromText( context.l10n.drug_selection_onboarding_description, ), Expanded(child: _buildDrugList(context, state)), diff --git a/app/lib/l10n/app_en.arb b/app/lib/l10n/app_en.arb index ea179d33..0c863143 100644 --- a/app/lib/l10n/app_en.arb +++ b/app/lib/l10n/app_en.arb @@ -206,6 +206,9 @@ "drugs_page_recommendation_warfarin": "Consult your pharmacist or doctor for more information.", "report_content_explanation": "Here is your PGx report. Tap on a gene name for more details on your results and a list of implicated drugs.", + "report_genetic_information_part_1": "If you would like to learn more about genetics, please visit ", + "report_genetic_information_part_2": ", a service of the National Library of Medicine.", + "genetic_information_source": "MedlinePlus", "report_page_indicator_explanation": "Phenotypes followed by an {indicatorName} ({indicator}) might be influenced by drugs you are currently taking", "@report_page_indicator_explanation": { "placeholders": { diff --git a/app/lib/report/pages/report.dart b/app/lib/report/pages/report.dart index b8294000..b76f602f 100644 --- a/app/lib/report/pages/report.dart +++ b/app/lib/report/pages/report.dart @@ -32,7 +32,24 @@ class ReportPage extends StatelessWidget { title: context.l10n.tab_report, body: Column( children: [ - PageDescription(context.l10n.report_content_explanation), + PageDescription(Column(children: [ + PageDescriptionText(context.l10n.report_content_explanation), + SizedBox(height: PharMeTheme.smallSpace), + RichText(text: TextSpan( + text: context.l10n.report_genetic_information_part_1, + style: pageDescriptionTextStyle, + children: [ + linkTextSpan( + text: context.l10n.genetic_information_source, + onTap: openFurtherGeneticInformation, + ), + TextSpan( + text: context.l10n.report_genetic_information_part_2, + style: pageDescriptionTextStyle, + ), + ], + )) + ])), scrollList( userGenotypes.map((genotypeResult) => GeneCard( genotypeResult, @@ -50,6 +67,7 @@ class ReportPage extends StatelessWidget { ), ); } + } class GeneCard extends StatelessWidget {