Line data Source code
1 : import 'package:flutter/material.dart';
2 : import 'package:nav/nav.dart';
3 : import 'package:nav/route/custom_page_route_builder.dart';
4 :
5 : class SlideFromLeftRoute<T> extends CustomPageRouteBuilder<T> {
6 : final Widget widget;
7 :
8 1 : SlideFromLeftRoute(this.widget, {int durationMs = Nav.defaultDurationMs})
9 1 : : super(
10 1 : pageBuilder: (BuildContext context, Animation<double> animation,
11 : Animation<double> secondaryAnimation) {
12 : return widget;
13 : },
14 1 : transitionDuration: Duration(milliseconds: durationMs),
15 1 : transitionsBuilder: (BuildContext context,
16 : Animation<double> animation,
17 : Animation<double> secondaryAnimation,
18 : Widget child) {
19 1 : return SlideTransition(
20 1 : position: Tween<Offset>(
21 : begin: const Offset(-1.0, 0.0),
22 : end: Offset.zero,
23 1 : ).animate(animation),
24 : child: child,
25 : );
26 : });
27 : }
28 :
29 : class SlideFromRightRoute<T> extends CustomPageRouteBuilder<T> {
30 : final Widget widget;
31 :
32 1 : SlideFromRightRoute(this.widget, {int durationMs = Nav.defaultDurationMs})
33 1 : : super(
34 1 : pageBuilder: (BuildContext context, Animation<double> animation,
35 : Animation<double> secondaryAnimation) {
36 : return widget;
37 : },
38 1 : transitionDuration: Duration(milliseconds: durationMs),
39 1 : transitionsBuilder: (BuildContext context,
40 : Animation<double> animation,
41 : Animation<double> secondaryAnimation,
42 : Widget child) {
43 1 : return SlideTransition(
44 1 : position: Tween<Offset>(
45 : begin: const Offset(1.0, 0.0),
46 : end: Offset.zero,
47 1 : ).animate(animation),
48 : child: child,
49 : );
50 : });
51 : }
52 :
53 : class SlideFromBottomRoute<T> extends CustomPageRouteBuilder<T> {
54 : final Widget widget;
55 :
56 1 : SlideFromBottomRoute(this.widget, {int durationMs = Nav.defaultDurationMs})
57 1 : : super(
58 1 : pageBuilder: (BuildContext context, Animation<double> animation,
59 : Animation<double> secondaryAnimation) {
60 : return widget;
61 : },
62 1 : transitionDuration: Duration(milliseconds: durationMs),
63 1 : transitionsBuilder: (BuildContext context,
64 : Animation<double> animation,
65 : Animation<double> secondaryAnimation,
66 : Widget child) {
67 1 : return SlideTransition(
68 1 : position: Tween<Offset>(
69 : begin: const Offset(0.0, 1.0),
70 : end: Offset.zero,
71 1 : ).animate(animation),
72 : child: child,
73 : );
74 : });
75 : }
76 :
77 : class SlideFromTopRoute<T> extends CustomPageRouteBuilder<T> {
78 : final Widget widget;
79 :
80 1 : SlideFromTopRoute(this.widget, {int durationMs = Nav.defaultDurationMs})
81 1 : : super(
82 1 : pageBuilder: (BuildContext context, Animation<double> animation,
83 : Animation<double> secondaryAnimation) {
84 : return widget;
85 : },
86 1 : transitionDuration: Duration(milliseconds: durationMs),
87 1 : transitionsBuilder: (BuildContext context,
88 : Animation<double> animation,
89 : Animation<double> secondaryAnimation,
90 : Widget child) {
91 1 : return SlideTransition(
92 1 : position: Tween<Offset>(
93 : begin: const Offset(0.0, -1.0),
94 : end: Offset.zero,
95 1 : ).animate(animation),
96 : child: child,
97 : );
98 : });
99 : }
|