Skip to content
This repository was archived by the owner on Apr 21, 2025. It is now read-only.

Commit 875fde5

Browse files
authored
Symptom checker intro (#1286)
* Symptom checker intro * Code review feedback
1 parent f9ab478 commit 875fde5

6 files changed

Lines changed: 159 additions & 34 deletions

File tree

client/flutter/lib/components/page_scaffold/page_header.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ class PageHeader extends StatelessWidget {
4242
);
4343
}
4444

45-
static const textColor = Color(0xff1A458E);
46-
4745
static Widget buildTitle(String title,
4846
{TextStyle textStyle,
4947
TypographyVariant variant = TypographyVariant.header}) {

client/flutter/lib/pages/main_pages/app_tab_router.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:who_app/api/content/schema/index_content.dart';
33
import 'package:who_app/constants.dart';
4+
import 'package:who_app/pages/main_pages/check_up_intro_page.dart';
45
import 'package:who_app/pages/main_pages/recent_numbers.dart';
56
import 'package:who_app/pages/main_pages/home_page.dart';
67
import 'package:who_app/pages/main_pages/learn_page.dart';
78
import 'package:who_app/pages/settings_page.dart';
8-
import 'package:who_app/pages/symptom_checker/symptom_checker_page.dart';
99
import 'package:flutter/material.dart';
1010

1111
class AppTabRouter extends StatelessWidget {
1212
static final List<Widget Function(BuildContext)> defaultTabs = [
1313
(context) => HomePage(
1414
dataSource: IndexContent.homeIndex,
1515
),
16-
(context) => SymptomCheckerPage(),
16+
(context) => CheckUpIntroPage(),
1717
(context) => LearnPage(
1818
dataSource: IndexContent.learnIndex,
1919
),
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
import 'package:flutter/cupertino.dart';
2+
import 'package:flutter/widgets.dart';
3+
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
4+
import 'package:url_launcher/url_launcher.dart';
5+
import 'package:who_app/components/page_button.dart';
6+
import 'package:who_app/components/page_scaffold/page_header.dart';
7+
import 'package:who_app/components/page_scaffold/page_scaffold.dart';
8+
import 'package:who_app/components/themed_text.dart';
9+
import 'package:who_app/constants.dart';
10+
11+
class CheckUpIntroPage extends StatelessWidget {
12+
@override
13+
Widget build(BuildContext context) {
14+
return PageScaffold(
15+
disableBackButton: true,
16+
headingBorderColor: Color(0x0),
17+
color: CupertinoColors.white,
18+
// TODO: localize
19+
title: "Check-Up",
20+
header: SliverSafeArea(
21+
top: true,
22+
bottom: false,
23+
sliver: SliverToBoxAdapter(
24+
child: Padding(
25+
padding: EdgeInsets.fromLTRB(16, 36, 16, 20),
26+
// TODO: localize
27+
child: PageHeader.buildTitle("Check-Up",
28+
textStyle: ThemedText.styleForVariant(
29+
TypographyVariant.title)
30+
.merge(
31+
TextStyle(color: Constants.primaryDarkColor)))))),
32+
body: <Widget>[_buildBody(context)],
33+
);
34+
}
35+
36+
Widget _buildBody(BuildContext context) => SliverList(
37+
delegate: SliverChildListDelegate([
38+
...optionWidgets(),
39+
submitWidget(context),
40+
]));
41+
42+
List<Widget> optionWidgets() {
43+
// TODO: localize everything
44+
return <Widget>[
45+
Padding(
46+
padding: const EdgeInsets.only(
47+
left: 24,
48+
right: 60,
49+
bottom: 20,
50+
top: 0,
51+
),
52+
child: ThemedText(
53+
"You should know...",
54+
variant: TypographyVariant.body,
55+
style: TextStyle(fontWeight: FontWeight.bold),
56+
)),
57+
_ListItem(
58+
title:
59+
"Your answers will not be shared with WHO or others without your permission.",
60+
icon: FontAwesomeIcons.lock),
61+
_ListItem(
62+
title:
63+
"By using this tool, you agree to its terms and that WHO will not be liable for any harm relating to your use.",
64+
icon: FontAwesomeIcons.solidCheckCircle,
65+
),
66+
_ListItem(
67+
title:
68+
"Information provided by this tool does not constitute medical advise and should not be used to diagnose or treat medical conditions.",
69+
icon: FontAwesomeIcons.fileMedical,
70+
extra: CupertinoButton(
71+
padding: EdgeInsets.zero,
72+
child: ThemedText(
73+
"See terms ›",
74+
variant: TypographyVariant.body,
75+
style: TextStyle(
76+
color: Constants.whoBackgroundBlueColor,
77+
),
78+
),
79+
onPressed: () {
80+
return launch("https://whoapp.org/terms");
81+
},
82+
),
83+
),
84+
];
85+
}
86+
87+
Widget submitWidget(BuildContext context) {
88+
return Padding(
89+
padding: const EdgeInsets.only(
90+
top: 52,
91+
left: 24,
92+
right: 24,
93+
bottom: 48,
94+
),
95+
child: PageButton(
96+
Constants.whoBackgroundBlueColor,
97+
"Get Started",
98+
() => Navigator.of(context, rootNavigator: true)
99+
.pushNamed('/symptom-checker-survey'),
100+
crossAxisAlignment: CrossAxisAlignment.center,
101+
mainAxisAlignment: MainAxisAlignment.center,
102+
verticalPadding: 12,
103+
borderRadius: 500,
104+
titleStyle: ThemedText.styleForVariant(TypographyVariant.button)
105+
.merge(TextStyle(color: CupertinoColors.white)),
106+
),
107+
);
108+
}
109+
}
110+
111+
class _ListItem extends StatelessWidget {
112+
final String title;
113+
final String subtitle;
114+
final IconData icon;
115+
final Widget extra;
116+
117+
_ListItem(
118+
{@required this.title, @required this.icon, this.subtitle, this.extra});
119+
120+
@override
121+
Widget build(BuildContext context) {
122+
return Padding(
123+
padding: const EdgeInsets.only(
124+
left: 32,
125+
right: 60,
126+
bottom: 20,
127+
),
128+
child: Row(
129+
crossAxisAlignment: CrossAxisAlignment.start,
130+
children: <Widget>[
131+
Icon(
132+
icon,
133+
color: Constants.whoBackgroundBlueColor,
134+
size: 24,
135+
),
136+
SizedBox(
137+
width: 12,
138+
),
139+
Flexible(
140+
child: Column(
141+
crossAxisAlignment: CrossAxisAlignment.start,
142+
children: <Widget>[
143+
ThemedText(this.title, variant: TypographyVariant.body),
144+
if (extra != null) extra,
145+
]))
146+
],
147+
),
148+
);
149+
}
150+
}

client/flutter/lib/pages/main_pages/routes.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:who_app/generated/l10n.dart';
66
import 'package:who_app/pages/about_page.dart';
77
import 'package:who_app/pages/facts_carousel_page.dart';
88
import 'package:who_app/pages/main_pages/app_tab_router.dart';
9+
import 'package:who_app/pages/main_pages/check_up_intro_page.dart';
910
import 'package:who_app/pages/main_pages/recent_numbers.dart';
1011
import 'package:who_app/pages/news_feed.dart';
1112
import 'package:who_app/pages/onboarding/onboarding_page.dart';
@@ -32,7 +33,8 @@ class Routes {
3233
dataSource: QuestionContent.yourQuestionsAnswered,
3334
title: S.of(context).homePagePageButtonQuestions,
3435
),
35-
'/symptom-checker': (context) => SymptomCheckerView(),
36+
'/symptom-checker': (context) => CheckUpIntroPage(),
37+
'/symptom-checker-survey': (context) => SymptomCheckerView(),
3638
'/symptom-checker-results': (context) => SymptomCheckerResultsPage(
3739
model:
3840
ModalRoute.of(context).settings.arguments as SymptomCheckerModel),

client/flutter/lib/pages/symptom_checker/question_pages/previous_next_buttons.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ class NextButton extends StatelessWidget {
2121
// TODO: Localize
2222
"Next",
2323
enableNext ? onNext : null,
24-
borderRadius: 50,
2524
crossAxisAlignment: CrossAxisAlignment.center,
26-
titleStyle: ThemedText.styleForVariant(TypographyVariant.h4)
25+
mainAxisAlignment: MainAxisAlignment.center,
26+
verticalPadding: 12,
27+
borderRadius: 500,
28+
titleStyle: ThemedText.styleForVariant(TypographyVariant.button)
2729
.merge(TextStyle(color: CupertinoColors.white)),
2830
);
2931
}

client/flutter/lib/pages/symptom_checker/symptom_checker_page.dart

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)