我有一个 ListView.builder,我想控制 ListView 中的滚动速度,但除了扩展模拟之外我找不到解决方案,然后我覆盖速度,然后扩展 ScrollingPhysics 类并提供速度从那里。但我不知道我该怎么做。
您是否有其他解决方案或示例来说明如何执行此操作?
如果您需要类似 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,
);
}
}
Run Code Online (Sandbox Code Playgroud)
并将其用于 ScrollView 子类小部件:
ListView.builder(
physics: CustomScrollPhysics(),
itemBuilder: (context, index) {
...
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |