flutter 页面视图.animateToPage不适用于弹性输入输出动画

pokxtpni  于 2022-12-05  发布在  Flutter
关注(0)|答案(2)|浏览(258)

我有一个页面视图与3页(初始页:0)。我打算做的是创建一个3节页与后退按钮,只有显示,如果不在初始页。
用于从初始页面导航到其他页面的代码。(工作时没有问题)

pageController.animateToPage(1,
    duration: Duration(milliseconds: 500),
    curve: Curves.easeIn);
}),

[缓入动画,500毫秒持续时间]
用于后退按钮的代码

pageController.animateToPage(pageController.initialPage,
   duration: Duration(milliseconds: 500),
   curve: Curves.elasticInOut 
);

[弹性输入输出动画,500毫秒持续时间]
尝试从第(2)页返回第(0)页时,此操作无效,但从第(1)页返回第(0)页时,此操作正常。
“什么能解决问题"

  • 将持续时间缩短至250ms或更短
  • 将曲线更改为缓进
  • 将animateToPage更改为jumpTopage

这是Flutter的已知限制还是我做错了什么?

yk9xbfzb

yk9xbfzb1#

我认为这种情况会发生在任何一条最初产生负值的曲线上(比如Curves.elasticInOut)。我无法精确定位确切的线(我怀疑它在ScrollPositionWithSingleContext的applyUserOffset中),但负值似乎被视为动画已经完成。它可能偶尔会用于较小/较快的动画,产生“较少负值”(或足够接近零)的值。
Curves.linear或Curves.ease* 不会产生负值,因此它们应该可以一致地工作。

xpcnnkqh

xpcnnkqh2#

将PageView滚动行为设置为库比蒂诺(允许负值)似乎可以解决此问题

PageView(
   controller: controller,
   scrollBehavior: CupertinoScrollBehavior(),
   children: [

相关问题