Added page transition

This commit is contained in:
Juan Gilsanz Polo
2024-02-24 14:05:17 +01:00
parent 47953a0232
commit c8e49d6878
3 changed files with 29 additions and 12 deletions

View File

@@ -10,6 +10,7 @@ import 'package:linkdy/screens/settings/ui/settings.dart';
import 'package:linkdy/screens/tags/ui/tags.dart'; import 'package:linkdy/screens/tags/ui/tags.dart';
import 'package:linkdy/screens/webview/ui/webview.dart'; import 'package:linkdy/screens/webview/ui/webview.dart';
import 'package:linkdy/widgets/layout.dart'; import 'package:linkdy/widgets/layout.dart';
import 'package:linkdy/widgets/page_transition.dart';
import 'package:linkdy/models/data/bookmarks.dart'; import 'package:linkdy/models/data/bookmarks.dart';
import 'package:linkdy/router/paths.dart'; import 'package:linkdy/router/paths.dart';
@@ -36,15 +37,15 @@ final List<RouteBase> appRoutes = [
routes: [ routes: [
GoRoute( GoRoute(
path: RoutesPaths.bookmarks, path: RoutesPaths.bookmarks,
builder: (context, state) => const BookmarksScreen(), builder: (context, state) => const PageTransition(child: BookmarksScreen()),
), ),
GoRoute( GoRoute(
path: RoutesPaths.tags, path: RoutesPaths.tags,
builder: (context, state) => const TagsScreen(), builder: (context, state) => const PageTransition(child: TagsScreen()),
), ),
GoRoute( GoRoute(
path: RoutesPaths.settings, path: RoutesPaths.settings,
builder: (context, state) => const SettingsScreen(), builder: (context, state) => const PageTransition(child: SettingsScreen()),
), ),
], ],
), ),

View File

@@ -24,15 +24,7 @@ class Layout extends ConsumerWidget {
return OverlayStyle( return OverlayStyle(
child: Scaffold( child: Scaffold(
body: PageTransitionSwitcher( body: child,
duration: const Duration(milliseconds: 200),
transitionBuilder: (child, primaryAnimation, secondaryAnimation) => FadeThroughTransition(
animation: primaryAnimation,
secondaryAnimation: secondaryAnimation,
child: child,
),
child: child,
),
bottomNavigationBar: NavigationBar( bottomNavigationBar: NavigationBar(
onDestinationSelected: (s) => ref.watch(routerProvider).replace(appScreens[s].route), onDestinationSelected: (s) => ref.watch(routerProvider).replace(appScreens[s].route),
selectedIndex: screenIndex, selectedIndex: screenIndex,

View File

@@ -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,
);
}
}