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

时间:2018-07-10 09:40:55

标签: dart flutter

我有一个ListView.builder,我想在ListView中控制滚动的速度,但是除了扩展Simulation之后再覆盖速度然后扩展ScrollingPhysics类和从那里提供速度。但是我不知道该怎么做。

您还有其他解决方案或示例吗?

1 个答案:

答案 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) {
    ...
})