一、自定义ViewPage的physics属性
- 自定义CirclePageScrollPhysics类 继承自 PageScrollPhysics类
- 重写createBallisticSimulation方法,position表示当前滑动位置,velocity表示当前滑动速度
- 增加判断:如果当前速度大于0,且滑动距离已超过最大滚动距离,则重置滚动状态到起点
- 示例:
class CirclePageScrollPhysics extends PageScrollPhysics {
const CirclePageScrollPhysics({ScrollPhysics parent}) : super(parent: parent);
@override
PageScrollPhysics applyTo(ScrollPhysics ancestor) {
return CirclePageScrollPhysics(parent: ancestor);
}
@override
Simulation createBallisticSimulation(
ScrollMetrics position, double velocity) {
if (velocity > 0 && position.pixels >= position.maxScrollExtent) {
return ScrollSpringSimulation(spring, 0, 0, 0, tolerance: tolerance);
}
return super.createBallisticSimulation(position, velocity);
}
}
PageView(
physics: CirclePageScrollPhysics(),
)