【问题标题】:PageView : How to change scrolling speed and smoothnessPageView:如何更改滚动速度和平滑度
【发布时间】:2019-08-14 08:16:01
【问题描述】:

我正在尝试更改滚动速度并使其在此 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);
                },
              )

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

解释:当使用页面视图时,您可以滚动页面,每个滚动一个动画都在起作用。该动画需要很长时间,并且比我想要的要流畅得多。我的问题是我可以加快动画速度并使其更清晰吗?

【问题讨论】:

  • 你能再澄清一下你的问题吗?
  • @MazinIbrahim 请检查我的编辑
  • 我也在寻找改变 PageView 动画的方法。你有什么发现吗?
  • @KakiMasterOfTime 感谢您的回复。 velocity 只改变列表两端的行为,但在中间滚动时没有任何改变。

标签: dart flutter


【解决方案1】:

此代码可能对您有所帮助,尽管这是针对 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;
  }
}

【讨论】:

  • 它不会改变 PageView 的任何内容。也许此代码仅适用于 ListView。
猜你喜欢
  • 1970-01-01
  • 2016-03-14
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
相关资源
最近更新 更多