diff --git a/app/lib/common/widgets/tutorial/show_drug_selection_intro.dart b/app/lib/common/widgets/tutorial/show_drug_selection_intro.dart index d6666e9a..a53e8ddc 100644 --- a/app/lib/common/widgets/tutorial/show_drug_selection_intro.dart +++ b/app/lib/common/widgets/tutorial/show_drug_selection_intro.dart @@ -22,4 +22,5 @@ FutureOr showDrugSelectionIntro(BuildContext context) => await MetaData.save(); }, firstBackButtonText: context.l10n.onboarding_prev, + fitToContent: true, ); \ No newline at end of file diff --git a/app/lib/common/widgets/tutorial/tutorial_builder.dart b/app/lib/common/widgets/tutorial/tutorial_builder.dart index e574707f..97ad39f4 100644 --- a/app/lib/common/widgets/tutorial/tutorial_builder.dart +++ b/app/lib/common/widgets/tutorial/tutorial_builder.dart @@ -1,3 +1,5 @@ +import 'package:expandable_page_view/expandable_page_view.dart'; + import '../../module.dart'; import '../scrollable_stack_with_indicator.dart'; import 'tutorial_page.dart'; @@ -9,12 +11,14 @@ class TutorialBuilder extends HookWidget { required this.initiateRouteBack, this.lastNextButtonText, this.firstBackButtonText, + required this.fitToContent, }); final List pages; final String? lastNextButtonText; final String? firstBackButtonText; final void Function() initiateRouteBack; + final bool fitToContent; Widget getImageAsset(String assetPath) { return Container( @@ -33,23 +37,30 @@ class TutorialBuilder extends HookWidget { ); final currentPageIndex = useState(0); final pageController = usePageController(initialPage: currentPageIndex.value); + final pageView = fitToContent + ? ExpandablePageView( + controller: pageController, + onPageChanged: (newPage) => currentPageIndex.value = newPage, + children: pageWidgets.toList(), + ) + : Expanded( + child: PageView( + controller: pageController, + onPageChanged: (newPage) => currentPageIndex.value = newPage, + children: pageWidgets.toList(), + ) + ); return Padding( padding: EdgeInsets.only( - left: PharMeTheme.largeSpace, - bottom: PharMeTheme.largeSpace, - right: PharMeTheme.largeSpace, + left: PharMeTheme.mediumSpace, + bottom: PharMeTheme.mediumSpace, + right: PharMeTheme.mediumSpace, ), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Expanded( - child: PageView( - controller: pageController, - onPageChanged: (newPage) => currentPageIndex.value = newPage, - children: pageWidgets.toList(), - ), - ), + pageView, Padding( padding: EdgeInsets.only(top: PharMeTheme.smallSpace), child: _buildActionBar(context, currentPageIndex, pageController), diff --git a/app/lib/common/widgets/tutorial/tutorial_controller.dart b/app/lib/common/widgets/tutorial/tutorial_controller.dart index 6464517b..285a7d0a 100644 --- a/app/lib/common/widgets/tutorial/tutorial_controller.dart +++ b/app/lib/common/widgets/tutorial/tutorial_controller.dart @@ -23,6 +23,7 @@ class TutorialController { String? lastNextButtonText, String? firstBackButtonText, FutureOr Function()? onClose, + bool fitToContent = false, }) async { if (_isOpen) return null; _isOpen = true; @@ -41,6 +42,7 @@ class TutorialController { lastNextButtonText: lastNextButtonText, firstBackButtonText: firstBackButtonText, initiateRouteBack: initiateRouteBack, + fitToContent: fitToContent, ), ); _isOpen = false; diff --git a/app/pubspec.lock b/app/pubspec.lock index e19465ae..ac77977f 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -326,6 +326,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.9" + expandable_page_view: + dependency: "direct main" + description: + name: expandable_page_view + sha256: "210dc6961cfc29f7ed42867824eb699c9a4b9b198a7c04b8bdc1c05844969dc6" + url: "https://pub.dev" + source: hosted + version: "1.0.17" fake_async: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index a14cc1a4..9624c1bb 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -17,6 +17,7 @@ dependencies: dartx: ^1.1.0 debug_overlay: ^0.2.11 dropdown_button2: ^2.3.9 + expandable_page_view: ^1.0.17 flutter: sdk: flutter flutter_bloc: ^8.0.1