Fixes transitions and curves arguments in navigation methods
- renamed and added defaults transition duration and types in "GetInterfase" - added missing parameters in `Get.to` / `Get.offAll`, fixes #570 - added optional `transitionDuration` and `transitionCurve` to `Get.dialog()`
Showing
3 changed files
with
33 additions
and
13 deletions
| 1 | import 'package:flutter/material.dart'; | 1 | import 'package:flutter/material.dart'; |
| 2 | + | ||
| 3 | +import '../../utils.dart'; | ||
| 2 | import '../navigation/root/parse_route.dart'; | 4 | import '../navigation/root/parse_route.dart'; |
| 3 | import '../navigation/root/root_controller.dart'; | 5 | import '../navigation/root/root_controller.dart'; |
| 4 | import '../navigation/routes/custom_transition.dart'; | 6 | import '../navigation/routes/custom_transition.dart'; |
| 5 | import '../navigation/routes/observers/route_observer.dart'; | 7 | import '../navigation/routes/observers/route_observer.dart'; |
| 6 | import '../navigation/routes/transitions_type.dart'; | 8 | import '../navigation/routes/transitions_type.dart'; |
| 7 | -import '../../utils.dart'; | ||
| 8 | 9 | ||
| 9 | ///Use Get.to instead of Navigator.push, Get.off instead of Navigator.pushReplacement, | 10 | ///Use Get.to instead of Navigator.push, Get.off instead of Navigator.pushReplacement, |
| 10 | ///Get.offAll instead of Navigator.pushAndRemoveUntil. For named routes just add "named" | 11 | ///Get.offAll instead of Navigator.pushAndRemoveUntil. For named routes just add "named" |
| @@ -16,8 +17,14 @@ import '../../utils.dart'; | @@ -16,8 +17,14 @@ import '../../utils.dart'; | ||
| 16 | abstract class GetInterface { | 17 | abstract class GetInterface { |
| 17 | bool defaultPopGesture = GetPlatform.isIOS; | 18 | bool defaultPopGesture = GetPlatform.isIOS; |
| 18 | bool defaultOpaqueRoute = true; | 19 | bool defaultOpaqueRoute = true; |
| 20 | + | ||
| 19 | Transition defaultTransition; | 21 | Transition defaultTransition; |
| 20 | - Duration defaultDurationTransition = Duration(milliseconds: 400); | 22 | + Duration defaultTransitionDuration = Duration(milliseconds: 400); |
| 23 | + Curve defaultTransitionCurve = Curves.easeOutQuad; | ||
| 24 | + | ||
| 25 | + Curve defaultDialogTransitionCurve = Curves.easeOutQuad; | ||
| 26 | + Duration defaultDialogTransitionDuration = Duration(milliseconds: 400); | ||
| 27 | + | ||
| 21 | bool defaultGlobalState = true; | 28 | bool defaultGlobalState = true; |
| 22 | RouteSettings settings; | 29 | RouteSettings settings; |
| 23 | String defaultSeparator = "_"; | 30 | String defaultSeparator = "_"; |
| @@ -42,6 +42,7 @@ extension GetNavigation on GetInterface { | @@ -42,6 +42,7 @@ extension GetNavigation on GetInterface { | ||
| 42 | Widget page, { | 42 | Widget page, { |
| 43 | bool opaque, | 43 | bool opaque, |
| 44 | Transition transition, | 44 | Transition transition, |
| 45 | + Curve curve, | ||
| 45 | Duration duration, | 46 | Duration duration, |
| 46 | int id, | 47 | int id, |
| 47 | bool fullscreenDialog = false, | 48 | bool fullscreenDialog = false, |
| @@ -65,9 +66,10 @@ extension GetNavigation on GetInterface { | @@ -65,9 +66,10 @@ extension GetNavigation on GetInterface { | ||
| 65 | ), | 66 | ), |
| 66 | popGesture: popGesture ?? defaultPopGesture, | 67 | popGesture: popGesture ?? defaultPopGesture, |
| 67 | transition: transition ?? defaultTransition, | 68 | transition: transition ?? defaultTransition, |
| 69 | + curve: curve ?? defaultTransitionCurve, | ||
| 68 | fullscreenDialog: fullscreenDialog, | 70 | fullscreenDialog: fullscreenDialog, |
| 69 | binding: binding, | 71 | binding: binding, |
| 70 | - transitionDuration: duration ?? defaultDurationTransition, | 72 | + transitionDuration: duration ?? defaultTransitionDuration, |
| 71 | ), | 73 | ), |
| 72 | ); | 74 | ); |
| 73 | } | 75 | } |
| @@ -317,7 +319,8 @@ extension GetNavigation on GetInterface { | @@ -317,7 +319,8 @@ extension GetNavigation on GetInterface { | ||
| 317 | /// It has the advantage of not needing context, | 319 | /// It has the advantage of not needing context, |
| 318 | /// so you can call from your business logic | 320 | /// so you can call from your business logic |
| 319 | /// | 321 | /// |
| 320 | - /// You can set a custom [transition], and a transition [duration]. | 322 | + /// You can set a custom [transition], define a Tween [curve], |
| 323 | + /// and a transition [duration]. | ||
| 321 | /// | 324 | /// |
| 322 | /// You can send any type of value to the other route in the [arguments]. | 325 | /// You can send any type of value to the other route in the [arguments]. |
| 323 | /// | 326 | /// |
| @@ -338,6 +341,7 @@ extension GetNavigation on GetInterface { | @@ -338,6 +341,7 @@ extension GetNavigation on GetInterface { | ||
| 338 | Widget page, { | 341 | Widget page, { |
| 339 | bool opaque = false, | 342 | bool opaque = false, |
| 340 | Transition transition, | 343 | Transition transition, |
| 344 | + Curve curve, | ||
| 341 | bool popGesture, | 345 | bool popGesture, |
| 342 | int id, | 346 | int id, |
| 343 | Object arguments, | 347 | Object arguments, |
| @@ -359,7 +363,8 @@ extension GetNavigation on GetInterface { | @@ -359,7 +363,8 @@ extension GetNavigation on GetInterface { | ||
| 359 | fullscreenDialog: fullscreenDialog, | 363 | fullscreenDialog: fullscreenDialog, |
| 360 | popGesture: popGesture ?? defaultPopGesture, | 364 | popGesture: popGesture ?? defaultPopGesture, |
| 361 | transition: transition ?? defaultTransition, | 365 | transition: transition ?? defaultTransition, |
| 362 | - transitionDuration: duration ?? defaultDurationTransition)); | 366 | + curve: curve ?? defaultTransitionCurve, |
| 367 | + transitionDuration: duration ?? defaultTransitionDuration)); | ||
| 363 | } | 368 | } |
| 364 | 369 | ||
| 365 | /// **Navigation.pushAndRemoveUntil()** shortcut .<br><br> | 370 | /// **Navigation.pushAndRemoveUntil()** shortcut .<br><br> |
| @@ -370,7 +375,7 @@ extension GetNavigation on GetInterface { | @@ -370,7 +375,7 @@ extension GetNavigation on GetInterface { | ||
| 370 | /// It has the advantage of not needing context, | 375 | /// It has the advantage of not needing context, |
| 371 | /// so you can call from your business logic | 376 | /// so you can call from your business logic |
| 372 | /// | 377 | /// |
| 373 | - /// You can set a custom [transition], and a transition [duration]. | 378 | + /// You can set a custom [transition], a [curve] and a transition [duration]. |
| 374 | /// | 379 | /// |
| 375 | /// You can send any type of value to the other route in the [arguments]. | 380 | /// You can send any type of value to the other route in the [arguments]. |
| 376 | /// | 381 | /// |
| @@ -401,8 +406,9 @@ extension GetNavigation on GetInterface { | @@ -401,8 +406,9 @@ extension GetNavigation on GetInterface { | ||
| 401 | Object arguments, | 406 | Object arguments, |
| 402 | Bindings binding, | 407 | Bindings binding, |
| 403 | bool fullscreenDialog = false, | 408 | bool fullscreenDialog = false, |
| 404 | - Duration duration, | ||
| 405 | Transition transition, | 409 | Transition transition, |
| 410 | + Curve curve, | ||
| 411 | + Duration duration, | ||
| 406 | }) { | 412 | }) { |
| 407 | var route = (Route<dynamic> rota) => false; | 413 | var route = (Route<dynamic> rota) => false; |
| 408 | 414 | ||
| @@ -418,12 +424,16 @@ extension GetNavigation on GetInterface { | @@ -418,12 +424,16 @@ extension GetNavigation on GetInterface { | ||
| 418 | fullscreenDialog: fullscreenDialog, | 424 | fullscreenDialog: fullscreenDialog, |
| 419 | routeName: routename, | 425 | routeName: routename, |
| 420 | transition: transition ?? defaultTransition, | 426 | transition: transition ?? defaultTransition, |
| 421 | - transitionDuration: duration ?? defaultDurationTransition, | 427 | + curve: curve ?? defaultTransitionCurve, |
| 428 | + transitionDuration: duration ?? defaultTransitionDuration, | ||
| 422 | ), | 429 | ), |
| 423 | predicate ?? route); | 430 | predicate ?? route); |
| 424 | } | 431 | } |
| 425 | 432 | ||
| 426 | - /// Show a dialog | 433 | + /// Show a dialog. |
| 434 | + /// You can pass a [transitionDuration] and/or [transitionCurve], | ||
| 435 | + /// overriding the defaults when the dialog shows up and closes. | ||
| 436 | + /// When the dialog closes, uses those animations in reverse. | ||
| 427 | Future<T> dialog<T>( | 437 | Future<T> dialog<T>( |
| 428 | Widget widget, { | 438 | Widget widget, { |
| 429 | bool barrierDismissible = true, | 439 | bool barrierDismissible = true, |
| @@ -431,6 +441,8 @@ extension GetNavigation on GetInterface { | @@ -431,6 +441,8 @@ extension GetNavigation on GetInterface { | ||
| 431 | bool useSafeArea = true, | 441 | bool useSafeArea = true, |
| 432 | bool useRootNavigator = true, | 442 | bool useRootNavigator = true, |
| 433 | RouteSettings routeSettings, | 443 | RouteSettings routeSettings, |
| 444 | + Duration transitionDuration, | ||
| 445 | + Curve transitionCurve, | ||
| 434 | }) { | 446 | }) { |
| 435 | assert(widget != null); | 447 | assert(widget != null); |
| 436 | assert(barrierDismissible != null); | 448 | assert(barrierDismissible != null); |
| @@ -456,12 +468,12 @@ extension GetNavigation on GetInterface { | @@ -456,12 +468,12 @@ extension GetNavigation on GetInterface { | ||
| 456 | barrierDismissible: barrierDismissible, | 468 | barrierDismissible: barrierDismissible, |
| 457 | barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel, | 469 | barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel, |
| 458 | barrierColor: barrierColor ?? Colors.black54, | 470 | barrierColor: barrierColor ?? Colors.black54, |
| 459 | - transitionDuration: const Duration(milliseconds: 150), | 471 | + transitionDuration: transitionDuration ?? defaultDialogTransitionDuration, |
| 460 | transitionBuilder: (context, animation, secondaryAnimation, child) { | 472 | transitionBuilder: (context, animation, secondaryAnimation, child) { |
| 461 | return FadeTransition( | 473 | return FadeTransition( |
| 462 | opacity: CurvedAnimation( | 474 | opacity: CurvedAnimation( |
| 463 | parent: animation, | 475 | parent: animation, |
| 464 | - curve: Curves.easeOut, | 476 | + curve: transitionCurve ?? defaultDialogTransitionCurve, |
| 465 | ), | 477 | ), |
| 466 | child: child, | 478 | child: child, |
| 467 | ); | 479 | ); |
| @@ -856,7 +868,7 @@ extension GetNavigation on GetInterface { | @@ -856,7 +868,7 @@ extension GetNavigation on GetInterface { | ||
| 856 | } | 868 | } |
| 857 | 869 | ||
| 858 | if (defaultDurationTransition != null) { | 870 | if (defaultDurationTransition != null) { |
| 859 | - this.defaultDurationTransition = defaultDurationTransition; | 871 | + this.defaultTransitionDuration = defaultDurationTransition; |
| 860 | } | 872 | } |
| 861 | 873 | ||
| 862 | if (defaultGlobalState != null) { | 874 | if (defaultGlobalState != null) { |
| @@ -4,6 +4,7 @@ import 'package:get/get.dart'; | @@ -4,6 +4,7 @@ import 'package:get/get.dart'; | ||
| 4 | import 'package:get/src/core/log.dart'; | 4 | import 'package:get/src/core/log.dart'; |
| 5 | import 'package:get/src/instance/get_instance.dart'; | 5 | import 'package:get/src/instance/get_instance.dart'; |
| 6 | import 'package:get/src/navigation/routes/get_route.dart'; | 6 | import 'package:get/src/navigation/routes/get_route.dart'; |
| 7 | + | ||
| 7 | import 'root_controller.dart'; | 8 | import 'root_controller.dart'; |
| 8 | import 'smart_management.dart'; | 9 | import 'smart_management.dart'; |
| 9 | 10 | ||
| @@ -209,7 +210,7 @@ class GetMaterialApp extends StatelessWidget { | @@ -209,7 +210,7 @@ class GetMaterialApp extends StatelessWidget { | ||
| 209 | defaultOpaqueRoute: opaqueRoute ?? Get.isOpaqueRouteDefault, | 210 | defaultOpaqueRoute: opaqueRoute ?? Get.isOpaqueRouteDefault, |
| 210 | defaultPopGesture: popGesture ?? Get.isPopGestureEnable, | 211 | defaultPopGesture: popGesture ?? Get.isPopGestureEnable, |
| 211 | defaultDurationTransition: | 212 | defaultDurationTransition: |
| 212 | - transitionDuration ?? Get.defaultDurationTransition, | 213 | + transitionDuration ?? Get.defaultTransitionDuration, |
| 213 | defaultGlobalState: defaultGlobalState ?? Get.defaultGlobalState, | 214 | defaultGlobalState: defaultGlobalState ?? Get.defaultGlobalState, |
| 214 | ); | 215 | ); |
| 215 | }, | 216 | }, |
-
Please register or login to post a comment