我有一个ListView.builder,我想在ListView中控制滚动的速度,但是除了扩展Simulation之后再覆盖速度然后扩展ScrollingPhysics类和从那里提供速度。但是我不知道该怎么做。
您还有其他解决方案或示例吗?
答案 0 :(得分:0)
如果您需要类似android的滚动行为,请查看ClampingScrollSimulation的构造函数参数friction
。对于ScrollPhysics,它是滚动减速度的系数。摩擦力越大,滚动视图越早停止滚动。
您可以在自定义滚动物理类中控制摩擦:
class CustomScrollPhysics extends ScrollPhysics {
const ChartScrollPhysics({ScrollPhysics parent}) : super(parent: parent);
@override
CustomScrollPhysics applyTo(ScrollPhysics ancestor) {
return CustomScrollPhysics(parent: buildParent(ancestor));
}
...
@override
Simulation createBallisticSimulation(
ScrollMetrics position, double velocity) {
final tolerance = this.tolerance;
if ((velocity.abs() < tolerance.velocity) ||
(velocity > 0.0 && position.pixels >= position.maxScrollExtent) ||
(velocity < 0.0 && position.pixels <= position.minScrollExtent)) {
return null;
}
return ClampingScrollSimulation(
position: position.pixels,
velocity: velocity,
friction: 0.5, // <--- HERE
tolerance: tolerance,
);
}
}
并将其用于ScrollView子类小部件:
ListView.builder(
physics: CustomScrollPhysics(),
itemBuilder: (context, index) {
...
})