Skip to content

Commit

Permalink
feat(#259): controll that tutorial only opens once
Browse files Browse the repository at this point in the history
  • Loading branch information
tamslo committed Apr 8, 2024
1 parent 9ad98ce commit 380c957
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 31 deletions.
2 changes: 1 addition & 1 deletion app/lib/common/widgets/module.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ export 'rounded_card.dart';
export 'scroll_list.dart';
export 'subheader_divider.dart';
export 'tutorial/content.dart';
export 'tutorial/show.dart';
export 'tutorial/controller.dart';
43 changes: 43 additions & 0 deletions app/lib/common/widgets/tutorial/controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import 'dart:async';

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

class TutorialController {
factory TutorialController() {
return _instance;
}
TutorialController._();
static final TutorialController _instance = TutorialController._();

bool _isOpen = false;

FutureOr<void> showTutorial({
required BuildContext context,
required List<TutorialContent> pages,
String? lastNextButtonText,
FutureOr<void> Function()? onClose,
}) {
if (_isOpen) return null;
_isOpen = true;
return showModalBottomSheet(
context: context,
enableDrag: true,
showDragHandle: true,
isDismissible: false,
isScrollControlled: true,
useSafeArea: true,
elevation: 0,
builder: (context) => TutorialContainer(
pages: pages,
lastNextButtonText: lastNextButtonText,
finishTutorial: () async {
final closeTutorial = Navigator.of(context).pop;
if (onClose != null) await onClose();
_isOpen = false;
closeTutorial();
},
),
);
}
}
27 changes: 0 additions & 27 deletions app/lib/common/widgets/tutorial/show.dart

This file was deleted.

8 changes: 5 additions & 3 deletions app/lib/drug_selection/pages/drug_selection.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class DrugSelectionPage extends HookWidget {
MetaData.instance.initialDrugSelectionInitiated ?? false;
if (concludesOnboarding && !initialDrugSelectionInitiated) {
WidgetsBinding.instance.addPostFrameCallback((_) async {
await showTutorial(
await TutorialController().showTutorial(
context: context,
pages: [
TutorialContent(
Expand All @@ -38,8 +38,10 @@ class DrugSelectionPage extends HookWidget {
),
),
],
updateMetadata: () =>
MetaData.instance.initialDrugSelectionInitiated = true,
onClose: () async {
MetaData.instance.initialDrugSelectionInitiated = true;
await MetaData.save();
}
);
});
}
Expand Down

0 comments on commit 380c957

Please sign in to comment.