roi peker

fixed GetPages.curve

- fixes #465
- iOS has an exception to the rule, when no Curve is defined, it doesn't use linearTransition in `CupertinoPages` (`Transition.cupertino/native/default`) and fullscreen dialogs so it applies the Curve, or use the default one.
It might be smarter, maybe, to also enforce the `animation` duration to stay in platforms defaults.
- had to change `CupertinoTransitions.buildTransitions` params in order to make the check and keep the code change small.
import 'dart:math';
import 'dart:ui' show lerpDouble;
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
... ... @@ -7,6 +8,7 @@ import 'package:get/route_manager.dart';
import 'package:get/src/core/get_main.dart';
import 'package:get/src/instance/get_instance.dart';
import 'package:get/utils.dart';
import 'bindings_interface.dart';
import 'custom_transition.dart';
import 'default_transitions.dart';
... ... @@ -136,18 +138,24 @@ class GetPageRoute<T> extends PageRoute<T> {
@override
Widget buildTransitions(BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) {
final finalCurve = curve ?? Get.defaultTransitionCurve;
final hasCurve = curve != null;
if (fullscreenDialog && transition == null) {
/// by default, if no curve is defined, use Cupertino transition in the
/// default way (no linearTransition)... otherwise take the curve passed.
return CupertinoFullscreenDialogTransition(
primaryRouteAnimation: animation,
primaryRouteAnimation: hasCurve
? CurvedAnimation(parent: animation, curve: finalCurve)
: animation,
secondaryRouteAnimation: secondaryAnimation,
child: child,
linearTransition: true);
linearTransition: hasCurve);
}
if (this.customTransition != null) {
return this.customTransition.buildTransition(
context,
curve,
finalCurve,
alignment,
animation,
secondaryAnimation,
... ... @@ -159,6 +167,10 @@ class GetPageRoute<T> extends PageRoute<T> {
: child);
}
/// Apply the curve by default...
final iosAnimation = animation;
animation = CurvedAnimation(parent: animation, curve: finalCurve);
switch (transition ?? Get.defaultTransition) {
case Transition.leftToRight:
return SlideLeftTransition().buildTransitions(
... ... @@ -283,9 +295,9 @@ class GetPageRoute<T> extends PageRoute<T> {
case Transition.cupertino:
return CupertinoTransitions().buildTransitions(
context,
curve,
hasCurve,
alignment,
animation,
hasCurve ? animation : iosAnimation,
secondaryAnimation,
popGesture ?? Get.defaultPopGesture
? _CupertinoBackGestureDetector<T>(
... ... @@ -335,39 +347,13 @@ class GetPageRoute<T> extends PageRoute<T> {
: child);
case Transition.native:
if (GetPlatform.isIOS)
return CupertinoTransitions().buildTransitions(
context,
curve,
alignment,
animation,
secondaryAnimation,
popGesture ?? Get.defaultPopGesture
? _CupertinoBackGestureDetector<T>(
enabledCallback: () => _isPopGestureEnabled<T>(this),
onStartPopGesture: () => _startPopGesture<T>(this),
child: child)
: child);
return FadeUpwardsPageTransitionsBuilder().buildTransitions(
this,
context,
animation,
secondaryAnimation,
popGesture ?? Get.defaultPopGesture
? _CupertinoBackGestureDetector<T>(
enabledCallback: () => _isPopGestureEnabled<T>(this),
onStartPopGesture: () => _startPopGesture<T>(this),
child: child)
: child);
default:
if (GetPlatform.isIOS)
return CupertinoTransitions().buildTransitions(
context,
curve,
hasCurve,
alignment,
animation,
hasCurve ? animation : iosAnimation,
secondaryAnimation,
popGesture ?? Get.defaultPopGesture
? _CupertinoBackGestureDetector<T>(
... ...
... ... @@ -188,7 +188,7 @@ class SizeTransitions {
class CupertinoTransitions {
Widget buildTransitions(
BuildContext context,
Curve curve,
bool useLinearTransition,
Alignment alignment,
Animation<double> animation,
Animation<double> secondaryAnimation,
... ... @@ -196,7 +196,7 @@ class CupertinoTransitions {
return CupertinoPageTransition(
primaryRouteAnimation: animation,
secondaryRouteAnimation: secondaryAnimation,
linearTransition: true,
linearTransition: useLinearTransition,
child: child,
);
}
... ...