horizontal method
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,
),
),
);
});
}
}