From c8e49d6878272f8c6d52483e9e96f103af2aca1a Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Sat, 24 Feb 2024 14:05:17 +0100 Subject: [PATCH] Added page transition --- lib/router/routes.dart | 7 ++++--- lib/widgets/layout.dart | 10 +--------- lib/widgets/page_transition.dart | 24 ++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 lib/widgets/page_transition.dart diff --git a/lib/router/routes.dart b/lib/router/routes.dart index 917106e..e267f25 100644 --- a/lib/router/routes.dart +++ b/lib/router/routes.dart @@ -10,6 +10,7 @@ import 'package:linkdy/screens/settings/ui/settings.dart'; import 'package:linkdy/screens/tags/ui/tags.dart'; import 'package:linkdy/screens/webview/ui/webview.dart'; import 'package:linkdy/widgets/layout.dart'; +import 'package:linkdy/widgets/page_transition.dart'; import 'package:linkdy/models/data/bookmarks.dart'; import 'package:linkdy/router/paths.dart'; @@ -36,15 +37,15 @@ final List appRoutes = [ routes: [ GoRoute( path: RoutesPaths.bookmarks, - builder: (context, state) => const BookmarksScreen(), + builder: (context, state) => const PageTransition(child: BookmarksScreen()), ), GoRoute( path: RoutesPaths.tags, - builder: (context, state) => const TagsScreen(), + builder: (context, state) => const PageTransition(child: TagsScreen()), ), GoRoute( path: RoutesPaths.settings, - builder: (context, state) => const SettingsScreen(), + builder: (context, state) => const PageTransition(child: SettingsScreen()), ), ], ), diff --git a/lib/widgets/layout.dart b/lib/widgets/layout.dart index 2194a4f..09b2ab1 100644 --- a/lib/widgets/layout.dart +++ b/lib/widgets/layout.dart @@ -24,15 +24,7 @@ class Layout extends ConsumerWidget { return OverlayStyle( child: Scaffold( - body: PageTransitionSwitcher( - duration: const Duration(milliseconds: 200), - transitionBuilder: (child, primaryAnimation, secondaryAnimation) => FadeThroughTransition( - animation: primaryAnimation, - secondaryAnimation: secondaryAnimation, - child: child, - ), - child: child, - ), + body: child, bottomNavigationBar: NavigationBar( onDestinationSelected: (s) => ref.watch(routerProvider).replace(appScreens[s].route), selectedIndex: screenIndex, diff --git a/lib/widgets/page_transition.dart b/lib/widgets/page_transition.dart new file mode 100644 index 0000000..1735107 --- /dev/null +++ b/lib/widgets/page_transition.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; +import 'package:animations/animations.dart'; + +class PageTransition extends StatelessWidget { + final Widget child; + + const PageTransition({ + Key? key, + required this.child, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return PageTransitionSwitcher( + duration: const Duration(milliseconds: 200), + transitionBuilder: (child, primaryAnimation, secondaryAnimation) => FadeThroughTransition( + animation: primaryAnimation, + secondaryAnimation: secondaryAnimation, + child: child, + ), + child: child, + ); + } +}