Skip to content

Commit

Permalink
feat(app): route between setup parts
Browse files Browse the repository at this point in the history
  • Loading branch information
tamslo committed Jan 3, 2025
1 parent 982415b commit 749985b
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 31 deletions.
3 changes: 3 additions & 0 deletions app/lib/common/widgets/tutorial/show_app_tour.dart
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ FutureOr<void> showAppTour(
: () async {
MetaData.instance.tutorialDone = true;
await MetaData.save();
// ignore: use_build_context_synchronously
await overwriteRoutes(context, nextPage: MainRoute());
},
lastNextButtonText: lastNextButtonText,
firstBackButtonText: revisiting ? null : context.l10n.onboarding_prev,
);
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@ FutureOr<void> showDrugSelectionIntro(BuildContext context) =>
onClose: () async {
MetaData.instance.initialDrugSelectionInitiated = true;
await MetaData.save();
}
},
firstBackButtonText: context.l10n.onboarding_prev,
);
28 changes: 22 additions & 6 deletions app/lib/common/widgets/tutorial/tutorial_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@ class TutorialBuilder extends HookWidget {
const TutorialBuilder({
super.key,
required this.pages,
required this.initiateRouteBack,
this.lastNextButtonText,
this.firstBackButtonText,
});

final List<TutorialPage> pages;
final String? lastNextButtonText;
final String? firstBackButtonText;
final void Function() initiateRouteBack;

Widget getImageAsset(String assetPath) {
return Container(
Expand Down Expand Up @@ -141,20 +145,32 @@ class TutorialBuilder extends HookWidget {
ValueNotifier<int> currentPageIndex,
) {
final isFirstPage = currentPageIndex.value == 0;
final showFirstButton =
!isFirstPage || firstBackButtonText.isNotNullOrBlank;
final isLastPage = currentPageIndex.value == pages.length - 1;
final directionButtonTextStyle =
PharMeTheme.textTheme.titleLarge!.copyWith(fontSize: 20);
const directionButtonIconSize = 22.0;
return Row(
mainAxisAlignment: isFirstPage
? MainAxisAlignment.end
: MainAxisAlignment.spaceBetween,
mainAxisAlignment: showFirstButton
? MainAxisAlignment.spaceBetween
: MainAxisAlignment.end,
mainAxisSize: MainAxisSize.max,
children: [
if (!isFirstPage) DirectionButton(
if (showFirstButton) DirectionButton(
direction: ButtonDirection.backward,
onPressed: () => currentPageIndex.value = currentPageIndex.value - 1,
text: context.l10n.onboarding_prev,
onPressed: isFirstPage
? () {
initiateRouteBack();
final currentRoute = context.router.current.name;
context.router.popUntil(
(route) => route.settings.name != null && route.settings.name != currentRoute,
);
}
: () => currentPageIndex.value = currentPageIndex.value - 1,
text: isFirstPage
? firstBackButtonText!
: context.l10n.onboarding_prev,
buttonTextStyle: directionButtonTextStyle,
iconSize: directionButtonIconSize,
),
Expand Down
9 changes: 8 additions & 1 deletion app/lib/common/widgets/tutorial/tutorial_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,20 @@ class TutorialController {
static TutorialController get instance => _instance;

bool _isOpen = false;
bool _wasRoutedBack = false;

void initiateRouteBack() => _wasRoutedBack = true;

FutureOr<void> showTutorial({
required BuildContext context,
required List<TutorialPage> pages,
String? lastNextButtonText,
String? firstBackButtonText,
FutureOr<void> Function()? onClose,
}) async {
if (_isOpen) return null;
_isOpen = true;
_wasRoutedBack = false;
await showModalBottomSheet(
context: context,
enableDrag: true,
Expand All @@ -33,9 +38,11 @@ class TutorialController {
builder: (context) => TutorialBuilder(
pages: pages,
lastNextButtonText: lastNextButtonText,
firstBackButtonText: firstBackButtonText,
initiateRouteBack: initiateRouteBack,
),
);
if (onClose != null) await onClose();
_isOpen = false;
if (!_wasRoutedBack && onClose != null) await onClose();
}
}
28 changes: 5 additions & 23 deletions app/lib/drug_selection/pages/drug_selection.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ class DrugSelectionPage extends HookWidget {
}
return unscrollablePageScaffold(
title: context.l10n.drug_selection_header,
canNavigateBack: !concludesOnboarding,
contextToDismissFocusOnTap: context,
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
Expand Down Expand Up @@ -66,28 +65,11 @@ class DrugSelectionPage extends HookWidget {
child: FullWidthButton(
context.l10n.action_continue,
() async {
await showAdaptiveDialog(
context: context,
builder: (context) => DialogWrapper(
title: context.l10n.drug_selection_continue_warning_title,
content: Text(context.l10n.drug_selection_continue_warning),
actions: [
DialogAction(
onPressed: context.router.root.maybePop,
text: context.l10n.action_cancel,
),
DialogAction(
onPressed: () async {
MetaData.instance.initialDrugSelectionDone = true;
await MetaData.save();
// ignore: use_build_context_synchronously
await overwriteRoutes(context, nextPage: MainRoute());
},
text: context.l10n.action_understood,
isDefault: true,
),
],
),
MetaData.instance.initialDrugSelectionDone = true;
await MetaData.save();
// ignore: use_build_context_synchronously
await context.router.push(
MainRoute(),
);
},
enabled: _isEditable(state),
Expand Down

0 comments on commit 749985b

Please sign in to comment.