Flutter - 如何控制 ListView 构建器的速度?

P.L*_*and 3 dart flutter

我有一个 ListView.builder,我想控制 ListView 中的滚动速度,但除了扩展模拟之外我找不到解决方案,然后我覆盖速度,然后扩展 ScrollingPhysics 类并提供速度从那里。但我不知道我该怎么做。

您是否有其他解决方案或示例来说明如何执行此操作?

Mol*_*0ko 5

如果您需要类似 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)