horizontal method

Widget horizontal(
  1. double aniValue,
  2. int index,
  3. double page,
  4. Widget child,
)

Implementation

Widget horizontal(double aniValue, int index, double page, Widget child) {
  if (page == index) {
    return child;
  } else if (page > index) {
    return LayoutBuilder(builder: (context, constraints) {
      return Transform.translate(
        offset: Offset(constraints.maxWidth * (1 - aniValue), 0),
        child: Transform(
            alignment: Alignment.center,
            transform: Matrix4.identity()
              ..setEntry(3, 2, 0.001)
              ..rotateY((pi * (1 - aniValue)).clamp(0, pi / 2)),
            child: child),
      );
    });
  } else {
    return LayoutBuilder(builder: (context, constraints) {
      return Transform.translate(
        offset: Offset(-constraints.maxWidth * (1 - aniValue), 0),
        child: Transform(
          alignment: Alignment.center,
          transform: Matrix4.identity()
            ..setEntry(3, 2, 0.001)
            ..rotateY((pi * aniValue).clamp(pi / 2, pi)),
          child: Transform(
            alignment: Alignment.center,
            transform: Matrix4.identity()..rotateY(pi),
            child: child,
          ),
        ),
      );
    });
  }
}