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;

  double width = MediaQuery.of(context).size.width;

  if (!exitAnimation.isDismissed) {
    var animation = CurvedAnimation(parent: secondaryAnimation, curve: curve);

    return Transform(
      alignment: exitPageAlignment,
      transform: Matrix4.identity()
        ..setEntry(3, 2, perspectiveScale)
        ..rotateY(angle * (animation.value))
        ..leftTranslate(-width * (animation.value)),
      child: child,
    );
  } else {
    var animation = CurvedAnimation(parent: primaryAnimation, curve: curve);

    return Transform(
      alignment: enterPageAlignment,
      transform: Matrix4.identity()
        ..setEntry(3, 2, perspectiveScale)
        ..rotateY(-angle * (1 - animation.value))
        ..leftTranslate(width * (1 - animation.value)),
      child: child,
    );
  }
}