扑出时如何在Flutter PageView中删除弹簧动画

时间:2019-11-10 12:15:02

标签: flutter

我正在使用PageView在日程表应用程序中滚动浏览多个月。

这是(简化而标准的)构建方法:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Roster"),
        body: PageView.builder(
          itemBuilder: (context, index) {
          return RosterMonth(
            month: _monthList[index].monthOfYear,
            year: _monthList[index].year,
          );
        },
      ),
    );
  }

现在,ScrollPhysics中的PageView使页面左右摆动(video)时页面会“反弹”,我想摆脱这种影响。

我曾尝试创建PageScrollPhysics的自定义版本,但仅获得了有限的成功。覆盖minFlingVelocity以返回高值(例如double.maxFinite)确实可以消除影响,但会使猛击的感觉非常不自然(因为我猜它不再是实际的猛击)。消除弹簧效果(并获得与Android中的ViewPager相同的效果)的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

看来,消除反弹效果的官方方法是使用 ClampingScrollPhysics 作为物理参数。我真的不知道这是否可以解决您的问题,让您感觉不自然。但是对我来说,这正是我想要的。

PageView(
      physics: ClampingScrollPhysics(),
      controller: _controller,
      children: [
        Container(color: Colors.red),
        Container(color: Colors.blue),
        Container(color: Colors.green),
      ],
    )