diff --git a/app/assets/images/onboarding/1.gif b/app/assets/images/onboarding/1.gif
deleted file mode 100644
index 37971a991..000000000
Binary files a/app/assets/images/onboarding/1.gif and /dev/null differ
diff --git a/app/assets/images/onboarding/1.png b/app/assets/images/onboarding/1.png
new file mode 100644
index 000000000..5483ad9d4
Binary files /dev/null and b/app/assets/images/onboarding/1.png differ
diff --git a/app/assets/images/onboarding/2.gif b/app/assets/images/onboarding/2.gif
deleted file mode 100644
index de2ca8168..000000000
Binary files a/app/assets/images/onboarding/2.gif and /dev/null differ
diff --git a/app/assets/images/onboarding/2.png b/app/assets/images/onboarding/2.png
new file mode 100644
index 000000000..d91a4f6ac
Binary files /dev/null and b/app/assets/images/onboarding/2.png differ
diff --git a/app/assets/images/onboarding/3.gif b/app/assets/images/onboarding/3.gif
deleted file mode 100644
index ea0910371..000000000
Binary files a/app/assets/images/onboarding/3.gif and /dev/null differ
diff --git a/app/assets/images/onboarding/3.png b/app/assets/images/onboarding/3.png
new file mode 100644
index 000000000..734b3be6a
Binary files /dev/null and b/app/assets/images/onboarding/3.png differ
diff --git a/app/assets/images/onboarding/4.gif b/app/assets/images/onboarding/4.gif
deleted file mode 100644
index 855819e8b..000000000
Binary files a/app/assets/images/onboarding/4.gif and /dev/null differ
diff --git a/app/assets/images/onboarding/4.png b/app/assets/images/onboarding/4.png
new file mode 100644
index 000000000..be48658e5
Binary files /dev/null and b/app/assets/images/onboarding/4.png differ
diff --git a/app/assets/images/onboarding/5.gif b/app/assets/images/onboarding/5.gif
deleted file mode 100644
index a1b2319af..000000000
Binary files a/app/assets/images/onboarding/5.gif and /dev/null differ
diff --git a/app/assets/images/onboarding/5.png b/app/assets/images/onboarding/5.png
new file mode 100644
index 000000000..296932ac7
Binary files /dev/null and b/app/assets/images/onboarding/5.png differ
diff --git a/app/assets/images/onboarding/svg/2.svg b/app/assets/images/onboarding/svg/2.svg
new file mode 100644
index 000000000..347eb1fac
--- /dev/null
+++ b/app/assets/images/onboarding/svg/2.svg
@@ -0,0 +1,594 @@
+
+
diff --git a/app/assets/images/onboarding/svg/3.svg b/app/assets/images/onboarding/svg/3.svg
new file mode 100644
index 000000000..e8fbf60f0
--- /dev/null
+++ b/app/assets/images/onboarding/svg/3.svg
@@ -0,0 +1,1332 @@
+
+
diff --git a/app/assets/images/onboarding/svg/4.svg b/app/assets/images/onboarding/svg/4.svg
new file mode 100644
index 000000000..ed7dc6a3e
--- /dev/null
+++ b/app/assets/images/onboarding/svg/4.svg
@@ -0,0 +1,466 @@
+
+
diff --git a/app/assets/images/onboarding/svg/5.svg b/app/assets/images/onboarding/svg/5.svg
new file mode 100644
index 000000000..52727758d
--- /dev/null
+++ b/app/assets/images/onboarding/svg/5.svg
@@ -0,0 +1,725 @@
+
+
diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock
index 7698af205..2642d9b56 100644
--- a/app/ios/Podfile.lock
+++ b/app/ios/Podfile.lock
@@ -60,7 +60,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
- Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
+ Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
flutter_share: 4be0208963c60b537e6255ed2ce1faae61cd9ac2
flutter_web_auth: 09a0abd245f1a07a3ff4dcf1247a048d89ee12a9
@@ -73,4 +73,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
-COCOAPODS: 1.11.3
+COCOAPODS: 1.10.0
diff --git a/app/lib/common/theme.dart b/app/lib/common/theme.dart
index c8afc6ac7..e354ced8c 100644
--- a/app/lib/common/theme.dart
+++ b/app/lib/common/theme.dart
@@ -70,6 +70,8 @@ class PharMeTheme {
static const backgroundColor = Colors.white;
static const errorColor = Color(0xccf52a2a);
static final borderColor = Colors.black.withOpacity(.2);
+
+ static const mediumSpace = 16.0;
}
extension WarningLevelColor on WarningLevel {
diff --git a/app/lib/l10n/app_en.arb b/app/lib/l10n/app_en.arb
index ca32974a9..93a3d3805 100644
--- a/app/lib/l10n/app_en.arb
+++ b/app/lib/l10n/app_en.arb
@@ -2,7 +2,7 @@
"action_cancel": "Cancel",
"action_continue": "Continue",
- "auth_choose_lab": "Please select your lab",
+ "auth_choose_lab": "Please select your data provider",
"auth_sign_in": "Sign in",
"auth_success": "Successfully imported data",
@@ -104,6 +104,7 @@
"onboarding_get_started": "Get started",
"onboarding_next": "Next",
+ "onboarding_prev": "Back",
"onboarding_1_header": "Welcome to PharMe",
"onboarding_1_text": "Your genome has more influence on your life than you might think!\nMore than 90% of people are vulnerable to unintended drug reactions.\n\nUse PharMe to find out about yours.",
"onboarding_2_header": "One size does not fit all",
diff --git a/app/lib/login/models/lab.dart b/app/lib/login/models/lab.dart
index ae90fcbc7..fe1f3b819 100644
--- a/app/lib/login/models/lab.dart
+++ b/app/lib/login/models/lab.dart
@@ -16,13 +16,7 @@ class Lab {
final labs = [
Lab(
- name: 'Illumina Solutions Center Berlin',
- authUrl: keycloakUrl('/realms/pharme/protocol/openid-connect/auth'),
- tokenUrl: keycloakUrl('/realms/pharme/protocol/openid-connect/token'),
- starAllelesUrl: labServerUrl('/star-alleles'),
- ),
- Lab(
- name: 'Mount Sinai Hospital (NYC)',
+ name: 'Mount Sinai Health System',
authUrl: keycloakUrl('/realms/pharme/protocol/openid-connect/auth'),
tokenUrl: keycloakUrl('/realms/pharme/protocol/openid-connect/token'),
starAllelesUrl: labServerUrl('/star-alleles'),
diff --git a/app/lib/login/pages/login.dart b/app/lib/login/pages/login.dart
index faa65a175..845de67f7 100644
--- a/app/lib/login/pages/login.dart
+++ b/app/lib/login/pages/login.dart
@@ -74,6 +74,11 @@ class LoginPage extends HookWidget {
action: action,
actionText: context.l10n.auth_sign_in,
children: [
+ Text(
+ context.l10n.auth_choose_lab,
+ style: PharMeTheme.textTheme.titleLarge,
+ ),
+ SizedBox(height: PharMeTheme.mediumSpace),
DropdownButtonHideUnderline(
child: DropdownButton2(
isExpanded: true,
@@ -113,7 +118,7 @@ class LoginPage extends HookWidget {
color: PharMeTheme.primaryColor,
size: 96,
),
- SizedBox(height: 16),
+ SizedBox(height: PharMeTheme.mediumSpace),
Text(
context.l10n.auth_success,
style: context.textTheme.headline6,
@@ -133,7 +138,7 @@ class LoginPage extends HookWidget {
color: PharMeTheme.errorColor,
size: 96,
),
- SizedBox(height: 16),
+ SizedBox(height: PharMeTheme.mediumSpace),
Text(
message,
style: context.textTheme.headline6,
@@ -152,7 +157,7 @@ class LoginPage extends HookWidget {
mainAxisSize: MainAxisSize.min,
children: [
...children,
- SizedBox(height: 16),
+ SizedBox(height: PharMeTheme.mediumSpace),
SizedBox(
width: double.infinity,
child: ElevatedButton(
diff --git a/app/lib/onboarding/pages/onboarding.dart b/app/lib/onboarding/pages/onboarding.dart
index 7be0d2802..761726b9a 100644
--- a/app/lib/onboarding/pages/onboarding.dart
+++ b/app/lib/onboarding/pages/onboarding.dart
@@ -6,19 +6,19 @@ import '../../../common/module.dart' hide MetaData;
class OnboardingPage extends HookWidget {
final _pages = [
OnboardingSubPage(
- illustrationPath: 'assets/images/onboarding/1.gif',
+ illustrationPath: 'assets/images/onboarding/1.png',
getHeader: (context) => context.l10n.onboarding_1_header,
getText: (context) => context.l10n.onboarding_1_text,
color: Color(0xFFFF7E41),
),
OnboardingSubPage(
- illustrationPath: 'assets/images/onboarding/2.gif',
+ illustrationPath: 'assets/images/onboarding/2.png',
getHeader: (context) => context.l10n.onboarding_2_header,
getText: (context) => context.l10n.onboarding_2_text,
color: Color(0xCCCC0700),
),
OnboardingSubPage(
- illustrationPath: 'assets/images/onboarding/3.gif',
+ illustrationPath: 'assets/images/onboarding/3.png',
getHeader: (context) => context.l10n.onboarding_3_header,
getText: (context) => context.l10n.onboarding_3_text,
color: Color(0xCC359600),
@@ -28,7 +28,7 @@ class OnboardingPage extends HookWidget {
),
),
OnboardingSubPage(
- illustrationPath: 'assets/images/onboarding/4.gif',
+ illustrationPath: 'assets/images/onboarding/4.png',
getHeader: (context) => context.l10n.onboarding_4_header,
getText: (context) => context.l10n.onboarding_4_text,
color: Color(0xFF00B9FA),
@@ -42,7 +42,7 @@ class OnboardingPage extends HookWidget {
),
),
OnboardingSubPage(
- illustrationPath: 'assets/images/onboarding/5.gif',
+ illustrationPath: 'assets/images/onboarding/5.png',
getHeader: (context) => context.l10n.onboarding_5_header,
getText: (context) => context.l10n.onboarding_5_text,
color: Color(0xFF0A64BC),
@@ -113,6 +113,15 @@ class OnboardingPage extends HookWidget {
currentPage.value == _pages.length - 1,
),
),
+ Positioned(
+ bottom: 16,
+ left: 16,
+ child: _buildPrevButton(
+ context,
+ pageController,
+ currentPage.value == 0,
+ ),
+ )
],
),
),
@@ -180,6 +189,43 @@ class OnboardingPage extends HookWidget {
),
);
}
+
+ Widget _buildPrevButton(
+ BuildContext context,
+ PageController pageController,
+ bool isFirstPage,
+ ) {
+ if (!isFirstPage) {
+ return TextButton(
+ key: Key('prevButton'),
+ onPressed: () {
+ pageController.previousPage(
+ duration: Duration(milliseconds: 500),
+ curve: Curves.ease,
+ );
+ },
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Icon(
+ Icons.arrow_back_rounded,
+ color: Colors.white,
+ size: 32,
+ ),
+ SizedBox(width: 8),
+ Text(
+ context.l10n.onboarding_prev,
+ style: PharMeTheme.textTheme.headlineSmall!
+ .copyWith(color: Colors.white),
+ ),
+ ],
+ ),
+ );
+ } else {
+ return SizedBox.shrink();
+ }
+ }
}
class OnboardingSubPage extends StatelessWidget {
@@ -205,9 +251,9 @@ class OnboardingSubPage extends StatelessWidget {
padding: const EdgeInsets.fromLTRB(32, 16, 32, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ mainAxisAlignment: MainAxisAlignment.center,
children: [
- SizedBox(height: 16),
+ SizedBox(height: PharMeTheme.mediumSpace),
Center(
child: FractionallySizedBox(
alignment: Alignment.topCenter,
@@ -218,6 +264,7 @@ class OnboardingSubPage extends StatelessWidget {
),
),
),
+ SizedBox(height: PharMeTheme.mediumSpace),
Column(children: [
AutoSizeText(
getHeader(context),
@@ -226,14 +273,14 @@ class OnboardingSubPage extends StatelessWidget {
),
maxLines: 2,
),
- SizedBox(height: 8),
+ SizedBox(height: PharMeTheme.mediumSpace),
Text(
getText(context),
- style: PharMeTheme.textTheme.bodyMedium!.copyWith(
+ style: PharMeTheme.textTheme.bodyLarge!.copyWith(
color: Colors.white,
),
),
- if (child != null) ...[SizedBox(height: 8), child!],
+ if (child != null) ...[SizedBox(height: PharMeTheme.mediumSpace), child!],
]),
// Empty widget for spaceBetween in this column to work properly
Container(),
diff --git a/app/pubspec.lock b/app/pubspec.lock
index fc2038de5..ae070c7a8 100644
--- a/app/pubspec.lock
+++ b/app/pubspec.lock
@@ -21,7 +21,7 @@ packages:
name: archive
url: "https://pub.dartlang.org"
source: hosted
- version: "3.3.0"
+ version: "3.1.11"
args:
dependency: transitive
description:
@@ -35,7 +35,7 @@ packages:
name: async
url: "https://pub.dartlang.org"
source: hosted
- version: "2.9.0"
+ version: "2.8.2"
auto_route:
dependency: "direct main"
description:
@@ -154,7 +154,7 @@ packages:
name: characters
url: "https://pub.dartlang.org"
source: hosted
- version: "1.2.1"
+ version: "1.2.0"
charcode:
dependency: transitive
description:
@@ -175,7 +175,7 @@ packages:
name: clock
url: "https://pub.dartlang.org"
source: hosted
- version: "1.1.1"
+ version: "1.1.0"
code_builder:
dependency: transitive
description:
@@ -203,14 +203,14 @@ packages:
name: coverage
url: "https://pub.dartlang.org"
source: hosted
- version: "1.5.0"
+ version: "1.2.0"
crypto:
dependency: transitive
description:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
- version: "3.0.2"
+ version: "3.0.1"
csslib:
dependency: transitive
description:
@@ -315,7 +315,7 @@ packages:
name: fake_async
url: "https://pub.dartlang.org"
source: hosted
- version: "1.3.1"
+ version: "1.3.0"
ffi:
dependency: transitive
description:
@@ -637,21 +637,21 @@ packages:
name: matcher
url: "https://pub.dartlang.org"
source: hosted
- version: "0.12.12"
+ version: "0.12.11"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
source: hosted
- version: "0.1.5"
+ version: "0.1.4"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
source: hosted
- version: "1.8.0"
+ version: "1.7.0"
mime:
dependency: transitive
description:
@@ -735,7 +735,7 @@ packages:
name: path
url: "https://pub.dartlang.org"
source: hosted
- version: "1.8.2"
+ version: "1.8.1"
path_drawing:
dependency: transitive
description:
@@ -1027,7 +1027,7 @@ packages:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
- version: "1.9.0"
+ version: "1.8.2"
stack_trace:
dependency: transitive
description:
@@ -1055,49 +1055,49 @@ packages:
name: string_scanner
url: "https://pub.dartlang.org"
source: hosted
- version: "1.1.1"
+ version: "1.1.0"
sync_http:
dependency: transitive
description:
name: sync_http
url: "https://pub.dartlang.org"
source: hosted
- version: "0.3.1"
+ version: "0.3.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
source: hosted
- version: "1.2.1"
+ version: "1.2.0"
test:
dependency: transitive
description:
name: test
url: "https://pub.dartlang.org"
source: hosted
- version: "1.21.4"
+ version: "1.21.1"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
- version: "0.4.12"
+ version: "0.4.9"
test_core:
dependency: transitive
description:
name: test_core
url: "https://pub.dartlang.org"
source: hosted
- version: "0.4.16"
+ version: "0.4.13"
time:
dependency: transitive
description:
name: time
url: "https://pub.dartlang.org"
source: hosted
- version: "2.1.3"
+ version: "2.1.2"
timing:
dependency: transitive
description:
@@ -1111,7 +1111,7 @@ packages:
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
- version: "1.3.1"
+ version: "1.3.0"
universal_html:
dependency: transitive
description:
@@ -1195,7 +1195,7 @@ packages:
name: vm_service
url: "https://pub.dartlang.org"
source: hosted
- version: "9.0.0"
+ version: "8.2.2"
watcher:
dependency: transitive
description: