Showing
1 changed file
with
0 additions
and
110 deletions
lib/src/material.dart
deleted
100644 → 0
1 | -import 'package:flutter/cupertino.dart'; | ||
2 | -import 'package:flutter/material.dart'; | ||
3 | - | ||
4 | -/// A modal route that replaces the entire screen with a platform-adaptive | ||
5 | -/// transition. | ||
6 | -/// | ||
7 | -/// For Android, the entrance transition for the page slides the page upwards | ||
8 | -/// and fades it in. The exit transition is the same, but in reverse. | ||
9 | -/// | ||
10 | -/// The transition is adaptive to the platform and on iOS, the page slides in | ||
11 | -/// from the right and exits in reverse. The page also shifts to the left in | ||
12 | -/// parallax when another page enters to cover it. (These directions are flipped | ||
13 | -/// in environments with a right-to-left reading direction.) | ||
14 | -/// | ||
15 | -/// By default, when a modal route is replaced by another, the previous route | ||
16 | -/// remains in memory. To free all the resources when this is not necessary, set | ||
17 | -/// [maintainState] to false. | ||
18 | -/// | ||
19 | -/// The `fullscreenDialog` property specifies whether the incoming page is a | ||
20 | -/// fullscreen modal dialog. On iOS, those pages animate from the bottom to the | ||
21 | -/// top rather than horizontally. | ||
22 | -/// | ||
23 | -/// The type `T` specifies the return type of the route which can be supplied as | ||
24 | -/// the route is popped from the stack via [Navigator.pop] by providing the | ||
25 | -/// optional `result` argument. | ||
26 | -/// | ||
27 | -/// See also: | ||
28 | -/// | ||
29 | -/// * [PageTransitionsTheme], which defines the default page transitions used | ||
30 | -/// by [MaterialPageRoute.buildTransitions]. | ||
31 | -class GetRoute<T> extends PageRoute<T> { | ||
32 | - /// Construct a MaterialPageRoute whose contents are defined by [builder]. | ||
33 | - /// | ||
34 | - /// The values of [builder], [maintainState], and [fullScreenDialog] must not | ||
35 | - /// be null. | ||
36 | - GetRoute({ | ||
37 | - @required this.builder, | ||
38 | - RouteSettings settings, | ||
39 | - this.opaque = true, | ||
40 | - this.maintainState = true, | ||
41 | - bool fullscreenDialog = false, | ||
42 | - }) : assert(builder != null), | ||
43 | - assert(maintainState != null), | ||
44 | - assert(fullscreenDialog != null), | ||
45 | - assert(opaque != null), | ||
46 | - super(settings: settings, fullscreenDialog: fullscreenDialog); | ||
47 | - | ||
48 | - /// Builds the primary contents of the route. | ||
49 | - final WidgetBuilder builder; | ||
50 | - | ||
51 | - @override | ||
52 | - final bool maintainState; | ||
53 | - | ||
54 | - /// Allows you to set opaque to false to prevent route reconstruction. | ||
55 | - @override | ||
56 | - final bool opaque; | ||
57 | - | ||
58 | - @override | ||
59 | - Duration get transitionDuration => const Duration(milliseconds: 300); | ||
60 | - | ||
61 | - @override | ||
62 | - Color get barrierColor => null; | ||
63 | - | ||
64 | - @override | ||
65 | - String get barrierLabel => null; | ||
66 | - | ||
67 | - @override | ||
68 | - bool canTransitionFrom(TransitionRoute<dynamic> previousRoute) { | ||
69 | - return previousRoute is GetRoute || previousRoute is CupertinoPageRoute; | ||
70 | - } | ||
71 | - | ||
72 | - @override | ||
73 | - bool canTransitionTo(TransitionRoute<dynamic> nextRoute) { | ||
74 | - // Don't perform outgoing animation if the next route is a fullscreen dialog. | ||
75 | - return (nextRoute is GetRoute && !nextRoute.fullscreenDialog) | ||
76 | - || (nextRoute is CupertinoPageRoute && !nextRoute.fullscreenDialog); | ||
77 | - } | ||
78 | - | ||
79 | - @override | ||
80 | - Widget buildPage( | ||
81 | - BuildContext context, | ||
82 | - Animation<double> animation, | ||
83 | - Animation<double> secondaryAnimation, | ||
84 | - ) { | ||
85 | - final Widget result = builder(context); | ||
86 | - assert(() { | ||
87 | - if (result == null) { | ||
88 | - throw FlutterError.fromParts(<DiagnosticsNode>[ | ||
89 | - ErrorSummary('The builder for route "${settings.name}" returned null.'), | ||
90 | - ErrorDescription('Route builders must never return null.') | ||
91 | - ]); | ||
92 | - } | ||
93 | - return true; | ||
94 | - }()); | ||
95 | - return Semantics( | ||
96 | - scopesRoute: true, | ||
97 | - explicitChildNodes: true, | ||
98 | - child: result, | ||
99 | - ); | ||
100 | - } | ||
101 | - | ||
102 | - @override | ||
103 | - Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) { | ||
104 | - final PageTransitionsTheme theme = Theme.of(context).pageTransitionsTheme; | ||
105 | - return theme.buildTransitions<T>(this, context, animation, secondaryAnimation, child); | ||
106 | - } | ||
107 | - | ||
108 | - @override | ||
109 | - String get debugLabel => '${super.debugLabel}(${settings.name})'; | ||
110 | -} |
-
Please register or login to post a comment