vertical method
Implementation
Widget vertical(double aniValue, int index, double page, Widget child) {
if (page == index) {
return child;
} else if (page > index) {
///当前要离开的页面 (aniValue 1-0)
return LayoutBuilder(builder: (context, constraints) {
return Transform.translate(
offset: Offset(0, constraints.maxHeight * (1 - aniValue)),
child: Transform(
alignment: Alignment.center,
transform: Matrix4.identity()
..rotateX((pi * (1 - aniValue)).clamp(0, pi / 2)),
child: child),
);
});
} else {
///下一个要进来的页面 (aniValue 0-1)
return LayoutBuilder(builder: (context, constraints) {
return Transform.translate(
offset: Offset(0, -constraints.maxHeight * (1 - aniValue)),
child: Transform(
alignment: Alignment.center,
transform: Matrix4.identity()
..rotateX((pi * aniValue).clamp(pi / 2, pi)),
child: Transform(
alignment: Alignment.center,
transform: Matrix4.identity()..rotateX(pi),
child: child,
),
),
);
});
}
}