CubePageRoute constructor

CubePageRoute({
  1. required Widget exitPage,
  2. required Widget enterPage,
  3. Color backgroundColor = Colors.black,
  4. Duration duration = const Duration(milliseconds: 500),
})

Implementation

CubePageRoute({
  required this.exitPage,
  required this.enterPage,
  this.backgroundColor = Colors.black,
  this.duration = const Duration(
    milliseconds: 500,
  ),
}) : super(
        transitionDuration: duration,
        pageBuilder: (context, animation, secondaryAnimation) => enterPage,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          return Container(
            color: backgroundColor,
            child: Stack(
              children: <Widget>[
                SlideTransition(
                  position: Tween<Offset>(
                    begin: Offset.zero,
                    end: Offset(-1.0, 0.0),
                  ).animate(animation),
                  child: Transform(
                    transform: Matrix4.identity()
                      ..setEntry(3, 2, 0.003)
                      ..rotateY(pi / 2 * animation.value),
                    alignment: FractionalOffset.centerRight,
                    child: exitPage,
                  ),
                ),
                SlideTransition(
                  position: Tween<Offset>(
                    begin: Offset(1.0, 0.0),
                    end: Offset.zero,
                  ).animate(animation),
                  child: Transform(
                    transform: Matrix4.identity()
                      ..setEntry(3, 2, 0.003)
                      ..rotateY(pi / 2 * (animation.value - 1)),
                    alignment: FractionalOffset.centerLeft,
                    child: enterPage,
                  ),
                )
              ],
            ),
          );
        },
      );