CupertinoFullscreenDialogTransition constructor Null safety
Creates an iOS-style transition used for summoning fullscreen dialogs.
primaryRouteAnimationis a linear route animation from 0.0 to 1.0 when this screen is being pushed.secondaryRouteAnimationis a linear route animation from 0.0 to 1.0 when another screen is being pushed on top of this one.linearTransitionis whether to perform the secondary transition linearly. Used to precisely track back gesture drags.
Implementation
CupertinoFullscreenDialogTransition({
super.key,
required Animation<double> primaryRouteAnimation,
required Animation<double> secondaryRouteAnimation,
required this.child,
required bool linearTransition,
}) : _positionAnimation = CurvedAnimation(
parent: primaryRouteAnimation,
curve: Curves.linearToEaseOut,
// The curve must be flipped so that the reverse animation doesn't play
// an ease-in curve, which iOS does not use.
reverseCurve: Curves.linearToEaseOut.flipped,
).drive(_kBottomUpTween),
_secondaryPositionAnimation =
(linearTransition
? secondaryRouteAnimation
: CurvedAnimation(
parent: secondaryRouteAnimation,
curve: Curves.linearToEaseOut,
reverseCurve: Curves.easeInToLinear,
)
).drive(_kMiddleLeftTween);