CupertinoPageTransition constructor

CupertinoPageTransition(
  1. {Key? key,
  2. required Animation<double> primaryRouteAnimation,
  3. required Animation<double> secondaryRouteAnimation,
  4. required Widget child,
  5. required bool linearTransition}
)

Creates an iOS-style page transition.

  • primaryRouteAnimation is a linear route animation from 0.0 to 1.0 when this screen is being pushed.
  • secondaryRouteAnimation is a linear route animation from 0.0 to 1.0 when another screen is being pushed on top of this one.
  • linearTransition is whether to perform the transitions linearly. Used to precisely track back gesture drags.

Implementation

CupertinoPageTransition({
  super.key,
  required Animation<double> primaryRouteAnimation,
  required Animation<double> secondaryRouteAnimation,
  required this.child,
  required bool linearTransition,
}) : _primaryPositionAnimation =
         (linearTransition
           ? primaryRouteAnimation
           : CurvedAnimation(
               parent: primaryRouteAnimation,
               curve: Curves.fastEaseInToSlowEaseOut,
               reverseCurve: Curves.fastEaseInToSlowEaseOut.flipped,
             )
         ).drive(_kRightMiddleTween),
     _secondaryPositionAnimation =
         (linearTransition
           ? secondaryRouteAnimation
           : CurvedAnimation(
               parent: secondaryRouteAnimation,
               curve: Curves.linearToEaseOut,
               reverseCurve: Curves.easeInToLinear,
             )
         ).drive(_kMiddleLeftTween),
     _primaryShadowAnimation =
         (linearTransition
           ? primaryRouteAnimation
           : CurvedAnimation(
               parent: primaryRouteAnimation,
               curve: Curves.linearToEaseOut,
             )
         ).drive(_CupertinoEdgeShadowDecoration.kTween);