build method

  1. @override
Widget build(
  1. BuildContext context,
  2. Animation<double> primaryAnimation,
  3. Animation<double> secondaryAnimation,
  4. Widget child,
)

Implementation

@override
Widget build(BuildContext context, Animation<double> primaryAnimation,
    Animation<double> secondaryAnimation, Widget child) {
  var exitAnimation = secondaryAnimation as ProxyAnimation;
  final double width = MediaQuery.of(context).size.width;

  if (!exitAnimation.isDismissed) {
    var animation = CurvedAnimation(parent: secondaryAnimation, curve: curve);
    double scaleExit = (1 - animation.value) > scale
        ? scale + (1 - animation.value - scale)
        : scale;

    return Container(
        color: backgroundColor,
        child: Transform(
          alignment: exitPageAlignment,
          transform: Matrix4.identity()
            ..scale(scaleExit)
            ..leftTranslate(-width * animation.value),
          child: child,
        ));
  } else {
    var animation = CurvedAnimation(parent: primaryAnimation, curve: curve);
    double scaleEnter =
        animation.value > scale ? scale + (animation.value - scale) : scale;

    return Transform(
      alignment: enterPageAlignment,
      transform: Matrix4.identity()
        ..scale(scaleEnter)
        ..leftTranslate(width * (1 - animation.value)),
      child: child,
    );
  }
}