Skip to content

Commit

Permalink
feat(app): update FAQ content
Browse files Browse the repository at this point in the history
  • Loading branch information
tamara-slosarek authored and tamslo committed Feb 24, 2025
1 parent 64ceebe commit 97e5054
Show file tree
Hide file tree
Showing 12 changed files with 172 additions and 181 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import '../../../module.dart';

class IncludedContentDisclaimerCard extends StatelessWidget {
const IncludedContentDisclaimerCard({super.key, required this.type});

final ListInclusionDescriptionType type;

@override
Widget build(BuildContext context) {
final text = type == ListInclusionDescriptionType.genes
? TextSpan(
text: context.l10n.included_content_disclaimer_text(
context.l10n.included_content_genes,
context.l10n.included_content_inclusion_genes,
),
)
: TextSpan(
children: [
TextSpan(
text: context.l10n.included_content_disclaimer_text(
context.l10n.included_content_medications,
context.l10n.included_content_inclusion_medications,
),
),
TextSpan(text: '\n\n'),
TextSpan(
text: context.l10n.included_content_addition,
style: TextStyle(fontStyle: FontStyle.italic),
),
]
);
return DisclaimerCard(
iconWidget: IncludedContentIcon(
type: type,
color: PharMeTheme.onSurfaceText,
size: defaultDisclaimerCardIconSize,
),
iconPadding: EdgeInsets.all(PharMeTheme.smallSpace * 0.3),
textWidget: Text.rich(text),
);
}
}
22 changes: 22 additions & 0 deletions app/lib/common/widgets/disclaimers/cards/pgx_info_card.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import '../../../module.dart';

class PgxInfoCard extends StatelessWidget {
@override
Widget build(BuildContext context) => DisclaimerCard(
icon: Icons.info,
iconPadding: EdgeInsets.all(PharMeTheme.smallSpace * 0.1),
textWidget: Text.rich(
TextSpan(
children: [
TextSpan(
text: '${context.l10n.pgx_abbreviation} ',
style: TextStyle(fontWeight: FontWeight.bold),
),
TextSpan(
text: context.l10n.pharmacogenomics_info_box_text,
),
]
),
),
);
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
import '../../module.dart';
import '../../../module.dart';

class ProfessionalDisclaimerCard extends StatelessWidget {
const ProfessionalDisclaimerCard({super.key, this.elevation});

final double? elevation;

@override
Widget build(BuildContext context) => DisclaimerCard(
text: context.l10n.drugs_page_main_disclaimer_text,
elevation: elevation,
);
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
import 'package:font_awesome_flutter/font_awesome_flutter.dart';

import '../../module.dart';
import '../../../module.dart';

class PuzzleDisclaimerCard extends StatelessWidget {
const PuzzleDisclaimerCard({super.key, this.elevation});

final double? elevation;

@override
Widget build(BuildContext context) => DisclaimerCard(
icon: FontAwesomeIcons.puzzlePiece,
iconPadding: EdgeInsets.all(PharMeTheme.smallSpace * 0.4),
text: context.l10n.drugs_page_puzzle_disclaimer_text,
elevation: elevation,
);
}
4 changes: 1 addition & 3 deletions app/lib/common/widgets/disclaimers/disclaimer_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ class DisclaimerCard extends StatelessWidget {
this.onClick,
this.iconPadding,
this.color,
this.elevation,
});

final IconData? icon;
Expand All @@ -25,13 +24,12 @@ class DisclaimerCard extends StatelessWidget {
final GestureTapCallback? onClick;
final EdgeInsets? iconPadding;
final Color? color;
final double? elevation;

@override
Widget build(BuildContext context) {
final widget = Card(
color: color ?? PharMeTheme.surfaceColor,
elevation: elevation,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
Expand Down

This file was deleted.

7 changes: 4 additions & 3 deletions app/lib/common/widgets/module.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ export 'dialog_action.dart';
export 'dialog_content_text.dart';
export 'dialog_wrapper.dart';
export 'direction_button.dart';
export 'disclaimers/cards/included_content_disclaimer_card.dart';
export 'disclaimers/cards/pgx_info_card.dart';
export 'disclaimers/cards/professional_disclaimer_card.dart';
export 'disclaimers/cards/puzzle_disclaimer_card.dart';
export 'disclaimers/disclaimer_card.dart';
export 'disclaimers/disclaimer_row.dart';
export 'disclaimers/included_medications_disclaimer_card.dart';
export 'disclaimers/professional_disclaimer_card.dart';
export 'disclaimers/puzzle_disclaimer_card.dart';
export 'drug_activity_selection.dart';
export 'drug_list/builder.dart';
export 'drug_list/cubit.dart';
Expand Down
145 changes: 66 additions & 79 deletions app/lib/faq/pages/content.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,63 +9,64 @@ class FaqSection {
final List<FaqQuestionBuilder> questions;
}

abstract class FaqQuestion {
class FaqQuestion {
const FaqQuestion({
required this.question,
required this.answer,
this.answerWidgets,
this.widgetsBeforeText = false,
});

final String question;
final dynamic answer;
}
final String answer;
final Iterable<Widget>? answerWidgets;
final bool widgetsBeforeText;

class FaqTextAnswerQuestion extends FaqQuestion {
const FaqTextAnswerQuestion({
required super.question,
required String super.answer,
});
}

class FaqWidgetAnswerQuestion extends FaqQuestion {
const FaqWidgetAnswerQuestion({
required super.question,
required Widget super.answer,
});
Widget get answerWidget {
final textContent = LargeMarkdownBody(data: answer);
if (answerWidgets == null) return textContent;
final answerChildren = widgetsBeforeText
? [
...answerWidgets!,
SizedBox(height: PharMeTheme.mediumSpace),
textContent,
]
: [
textContent,
SizedBox(height: PharMeTheme.smallSpace),
...answerWidgets!,
];
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: answerChildren,
);
}
}

List<FaqSection> getFaqContent() => <FaqSection>[
FaqSection(
title: (context) => context.l10n.faq_section_title_pharme,
questions: [
(context) => FaqWidgetAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_pharme_function,
answer: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(context.l10n.faq_answer_pharme_function),
SizedBox(height: PharMeTheme.smallSpace),
PuzzleDisclaimerCard(elevation: 0),
SizedBox(height: PharMeTheme.smallSpace * 0.5),
IncludedMedicationsDisclaimerCard(elevation: 0),
],
),
answer: context.l10n.faq_answer_pharme_function,
answerWidgets: [
PuzzleDisclaimerCard(),
IncludedContentDisclaimerCard(
type: ListInclusionDescriptionType.medications,
),
],
),
(context) => FaqWidgetAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_pharme_hcp,
answer: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(context.l10n.faq_answer_pharme_hcp),
SizedBox(height: PharMeTheme.smallSpace),
ProfessionalDisclaimerCard(elevation: 0),
],
),
answer: context.l10n.faq_answer_pharme_hcp,
answerWidgets: [ProfessionalDisclaimerCard()],
),
(context) => FaqTextAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_pharme_data_source,
answer: context.l10n.faq_answer_pharme_data_source,
),
(context) => FaqTextAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_data_security,
answer: context.l10n.faq_answer_data_security,
),
Expand All @@ -74,70 +75,56 @@ List<FaqSection> getFaqContent() => <FaqSection>[
FaqSection(
title: (context) => context.l10n.faq_section_title_pgx,
questions: [
(context) => FaqTextAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_pgx_what,
answer: context.l10n.faq_answer_pgx_what,
answerWidgets: [PgxInfoCard()],
widgetsBeforeText: true,
),
(context) => FaqTextAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_pgx_why,
answer: context.l10n.faq_answer_pgx_why,
answerWidgets: [PuzzleDisclaimerCard()],
),
(context) => FaqTextAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_adr_factors,
answer: context.l10n.faq_answer_adr_factors,
),
(context) => FaqTextAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_guidelines_are_developing,
answer: context.l10n.faq_answer_guidelines_are_developing,
answerWidgets: [
IncludedContentDisclaimerCard(
type: ListInclusionDescriptionType.genes,
),
],
),
(context) => FaqWidgetAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_genetics_info,
answer: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(context.l10n.faq_answer_genetics_info),
SizedBox(height: PharMeTheme.smallSpace * 0.5),
Hyperlink(
text: geneticInformationUrl.toString(),
onTap: openFurtherGeneticInformation,
),
SizedBox(height: PharMeTheme.smallSpace * 0.5),
Text('\n${context.l10n.consult_text}'),
],
),
answer: context.l10n.faq_answer_genetics_info,
),
(context) => FaqWidgetAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_which_medications,
answer: Column(
children: [
Text(context.l10n.faq_answer_which_medications),
SizedBox(height: PharMeTheme.smallSpace * 0.5),
UnorderedList(
context.l10n.faq_answer_which_medications_examples
.split('; ')
.map((example) => example.capitalize()).toList(),
),
],
),
answer: context.l10n.faq_answer_which_medications,
answerWidgets: [
IncludedContentDisclaimerCard(
type: ListInclusionDescriptionType.medications,
),
],
widgetsBeforeText: true,
),
(context) => FaqWidgetAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_phenoconversion,
answer: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(context.l10n.faq_answer_phenoconversion),
SizedBox(height: PharMeTheme.smallSpace),
...inhibitableGenes.map(
(geneName) => GeneModulatorList(geneName: geneName).widget,
),
],
answer: context.l10n.faq_answer_phenoconversion,
answerWidgets: inhibitableGenes.map(
(geneName) => GeneModulatorList(geneName: geneName).widget,
),
),
(context) => FaqTextAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_family,
answer: context.l10n.faq_answer_family,
),
(context) => FaqTextAnswerQuestion(
(context) => FaqQuestion(
question: context.l10n.faq_question_share,
answer: context.l10n.faq_answer_share,
),
Expand Down
4 changes: 1 addition & 3 deletions app/lib/faq/pages/faq.dart
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,7 @@ class FaqPage extends HookWidget {
right: PharMeTheme.mediumSpace,
bottom: PharMeTheme.smallSpace,
),
title: question is FaqTextAnswerQuestion
? LargeMarkdownBody(data: question.answer)
: question.answer,
title: question.answerWidget,
),
],
),
Expand Down
Loading

0 comments on commit 97e5054

Please sign in to comment.