Skip to content

Commit

Permalink
refactor(#259): use functions to show tutorials
Browse files Browse the repository at this point in the history
  • Loading branch information
tamslo committed Apr 8, 2024
1 parent 8dc6889 commit 0015626
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 36 deletions.
5 changes: 3 additions & 2 deletions app/lib/common/widgets/module.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export 'direction_button.dart';
export 'drug_list/builder.dart';
export 'drug_list/cubit.dart';
export 'drug_list/drug_items/drug_cards.dart';
export 'drug_list/drug_items/drug_checkbox_list.dart';
export 'drug_search/builder.dart';
export 'drug_search/filter_button.dart';
export 'drug_search/filter_data_wrapper.dart';
Expand All @@ -26,5 +27,5 @@ export 'radiant_gradient_mask.dart';
export 'rounded_card.dart';
export 'scroll_list.dart';
export 'subheader_divider.dart';
export 'tutorial/content.dart';
export 'tutorial/controller.dart';
export 'tutorial/show_app_tour.dart';
export 'tutorial/show_drug_selection_intro.dart';
1 change: 1 addition & 0 deletions app/lib/common/widgets/tutorial/container.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import '../../module.dart';
import 'content.dart';

class TutorialContainer extends HookWidget {
const TutorialContainer({
Expand Down
2 changes: 2 additions & 0 deletions app/lib/common/widgets/tutorial/controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ import 'dart:async';

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

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

bool _isOpen = false;

Expand Down
33 changes: 33 additions & 0 deletions app/lib/common/widgets/tutorial/show_app_tour.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import 'dart:async';

import '../../module.dart';
import 'content.dart';
import 'controller.dart';

FutureOr<void> showAppTour(
BuildContext context,
{
required String lastNextButtonText,
required bool revisiting,
}) =>
TutorialController.instance.showTutorial(
context: context,
pages: [
TutorialContent(
title: (context) =>
context.l10n.tutorial_app_tour_1_title,
content: (context) => TextSpan(
text: context.l10n.tutorial_app_tour_1_body,
),
assetPath:
'assets/images/tutorial/04_bottom_navigation_loopable.gif',
),
],
onClose: revisiting
? null
: () async {
MetaData.instance.tutorialDone = true;
await MetaData.save();
},
lastNextButtonText: lastNextButtonText,
);
23 changes: 23 additions & 0 deletions app/lib/common/widgets/tutorial/show_drug_selection_intro.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'dart:async';

import '../../module.dart';
import 'content.dart';
import 'controller.dart';

FutureOr<void> showDrugSelectionIntro(BuildContext context) =>
TutorialController.instance.showTutorial(
context: context,
pages: [
TutorialContent(
title: (context) =>
context.l10n.tutorial_initial_drug_selection_title,
content: (context) => TextSpan(
text: context.l10n.tutorial_initial_drug_selection_body,
),
),
],
onClose: () async {
MetaData.instance.initialDrugSelectionInitiated = true;
await MetaData.save();
}
);
18 changes: 1 addition & 17 deletions app/lib/drug_selection/pages/drug_selection.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import 'package:provider/provider.dart';

import '../../common/models/metadata.dart';
import '../../common/module.dart' hide MetaData;
import '../../common/widgets/drug_list/drug_items/drug_checkbox_list.dart';
import '../cubit.dart';

@RoutePage()
Expand All @@ -27,22 +26,7 @@ class DrugSelectionPage extends HookWidget {
MetaData.instance.initialDrugSelectionInitiated ?? false;
if (concludesOnboarding && !initialDrugSelectionInitiated) {
WidgetsBinding.instance.addPostFrameCallback((_) async {
await TutorialController().showTutorial(
context: context,
pages: [
TutorialContent(
title: (context) =>
context.l10n.tutorial_initial_drug_selection_title,
content: (context) => TextSpan(
text: context.l10n.tutorial_initial_drug_selection_body,
),
),
],
onClose: () async {
MetaData.instance.initialDrugSelectionInitiated = true;
await MetaData.save();
}
);
await showDrugSelectionIntro(context);
});
}
return unscrollablePageScaffold(
Expand Down
20 changes: 3 additions & 17 deletions app/lib/main/pages/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,24 +45,10 @@ class MainPage extends StatelessWidget {
final tutorialDone = MetaData.instance.tutorialDone ?? false;
if (!tutorialDone) {
WidgetsBinding.instance.addPostFrameCallback((_) async {
await TutorialController().showTutorial(
context: context,
pages: [
TutorialContent(
title: (context) =>
context.l10n.tutorial_app_tour_1_title,
content: (context) => TextSpan(
text: context.l10n.tutorial_app_tour_1_body,
),
assetPath:
'assets/images/tutorial/04_bottom_navigation_loopable.gif',
),
],
onClose: () async {
MetaData.instance.tutorialDone = true;
await MetaData.save();
},
await showAppTour(
context,
lastNextButtonText: context.l10n.tutorial_to_the_app,
revisiting: false,
);
});
}
Expand Down

0 comments on commit 0015626

Please sign in to comment.