Showing
3 changed files
with
62 additions
and
1 deletions
| @@ -102,7 +102,13 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> { | @@ -102,7 +102,13 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> { | ||
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | final pageToBuild = middlewareRunner.runOnPageBuildStart(page)!; | 104 | final pageToBuild = middlewareRunner.runOnPageBuildStart(page)!; |
| 105 | - return middlewareRunner.runOnPageBuilt(pageToBuild()); | 105 | + Widget p; |
| 106 | + if (pageToBuild is GetRouteAwarePageBuilder) { | ||
| 107 | + p = pageToBuild(this); | ||
| 108 | + } else { | ||
| 109 | + p = pageToBuild(); | ||
| 110 | + } | ||
| 111 | + return middlewareRunner.runOnPageBuilt(p); | ||
| 106 | } | 112 | } |
| 107 | 113 | ||
| 108 | @override | 114 | @override |
| @@ -182,3 +182,55 @@ class GetPage<T> extends Page<T> { | @@ -182,3 +182,55 @@ class GetPage<T> extends Page<T> { | ||
| 182 | ).getPageToRoute<T>(this, unknownRoute); | 182 | ).getPageToRoute<T>(this, unknownRoute); |
| 183 | } | 183 | } |
| 184 | } | 184 | } |
| 185 | + | ||
| 186 | +class GetRouteAwarePage<T> extends GetPage<T> { | ||
| 187 | + GetRouteAwarePage({ | ||
| 188 | + required String name, | ||
| 189 | + required GetRouteAwarePageBuilder page, | ||
| 190 | + bool? popGesture, | ||
| 191 | + Map<String, String>? parameters, | ||
| 192 | + String? title, | ||
| 193 | + Transition? transition, | ||
| 194 | + Curve curve = Curves.linear, | ||
| 195 | + bool? participatesInRootNavigator, | ||
| 196 | + Alignment? alignment, | ||
| 197 | + bool maintainState = true, | ||
| 198 | + bool opaque = true, | ||
| 199 | + double Function(BuildContext context)? gestureWidth, | ||
| 200 | + Bindings? binding, | ||
| 201 | + List<Bindings> bindings = const [], | ||
| 202 | + CustomTransition? customTransition, | ||
| 203 | + Duration? transitionDuration, | ||
| 204 | + bool fullscreenDialog = false, | ||
| 205 | + bool preventDuplicates = true, | ||
| 206 | + Object? arguments, | ||
| 207 | + List<GetPage> children = const <GetPage>[], | ||
| 208 | + List<GetMiddleware>? middlewares, | ||
| 209 | + GetPage? unknownRoute, | ||
| 210 | + bool showCupertinoParallax = true, | ||
| 211 | + }) : super( | ||
| 212 | + name: name, | ||
| 213 | + page: page, | ||
| 214 | + alignment: alignment, | ||
| 215 | + arguments: arguments, | ||
| 216 | + binding: binding, | ||
| 217 | + bindings: bindings, | ||
| 218 | + children: children, | ||
| 219 | + curve: curve, | ||
| 220 | + customTransition: customTransition, | ||
| 221 | + fullscreenDialog: fullscreenDialog, | ||
| 222 | + gestureWidth: gestureWidth, | ||
| 223 | + maintainState: maintainState, | ||
| 224 | + middlewares: middlewares, | ||
| 225 | + opaque: opaque, | ||
| 226 | + parameters: parameters, | ||
| 227 | + participatesInRootNavigator: participatesInRootNavigator, | ||
| 228 | + popGesture: popGesture, | ||
| 229 | + preventDuplicates: preventDuplicates, | ||
| 230 | + showCupertinoParallax: showCupertinoParallax, | ||
| 231 | + title: title, | ||
| 232 | + transition: transition, | ||
| 233 | + transitionDuration: transitionDuration, | ||
| 234 | + unknownRoute: unknownRoute, | ||
| 235 | + ); | ||
| 236 | +} |
| 1 | import 'package:flutter/widgets.dart'; | 1 | import 'package:flutter/widgets.dart'; |
| 2 | 2 | ||
| 3 | +import 'default_route.dart'; | ||
| 4 | + | ||
| 3 | enum Transition { | 5 | enum Transition { |
| 4 | fade, | 6 | fade, |
| 5 | fadeIn, | 7 | fadeIn, |
| @@ -19,3 +21,4 @@ enum Transition { | @@ -19,3 +21,4 @@ enum Transition { | ||
| 19 | } | 21 | } |
| 20 | 22 | ||
| 21 | typedef GetPageBuilder = Widget Function(); | 23 | typedef GetPageBuilder = Widget Function(); |
| 24 | +typedef GetRouteAwarePageBuilder<T> = Widget Function([GetPageRoute<T>? route]); |
-
Please register or login to post a comment