PageView:如何更改滚动速度和平滑度

时间:2019-03-23 14:47:10

标签: dart flutter

我正在尝试更改滚动速度并使其在此PageView项上平滑:

PageView.builder(
                // store this controller in a State to save the carousel scroll position
                controller: controller,
                itemBuilder: (BuildContext context, int itemIndex) {
                  return _buildCarouselItem(context, carouselIndex, itemIndex);
                },
                physics: PageScrollPhysics(),
                itemCount: Itmes.length,
                onPageChanged: (int) {
                  OnNext(int);
                },
              )

没什么不同,但是,我必须说,可以在页面之间动态切换时进行速度更改,但这是默认选项。

EXPLANATION::使用页面视图时,您可以滚动页面,每个页面都可以播放动画。动画花费了一点时间,并且比我想要的要平滑得多。我的问题是,我可以加快动画速度并使它更清晰吗?

1 个答案:

答案 0 :(得分:0)

尽管这是用于ListView的,但此代码可能会为您提供帮助。您可以通过这种方式更改速度...

class PageScrollPhysics extends ScrollPhysics {
  @override
  ScrollPhysics applyTo(ScrollPhysics ancestor) {
    return PageScrollPhysics();
  }

  @override
  Simulation createBallisticSimulation(
      ScrollMetrics position, double velocity) {
    return CustomSimulation(
      initPosition: position.pixels,
      velocity: velocity,
    );
  }
}

class CustomSimulation extends Simulation {
  final double initPosition;
  final double velocity;

  CustomSimulation({this.initPosition, this.velocity});

  @override
  double x(double time) {
    var max =
        math.max(math.min(initPosition, 0.0), initPosition + velocity * time);
    return max;
  }

  @override
  double dx(double time) {
    // print(velocity.toString());
    return velocity;
  }

  @override
  bool isDone(double time) {
    return false;
  }
}