我有一个页面视图与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的已知限制还是我做错了什么?
2条答案
按热度按时间yk9xbfzb1#
我认为这种情况会发生在任何一条最初产生负值的曲线上(比如Curves.elasticInOut)。我无法精确定位确切的线(我怀疑它在ScrollPositionWithSingleContext的applyUserOffset中),但负值似乎被视为动画已经完成。它可能偶尔会用于较小/较快的动画,产生“较少负值”(或足够接近零)的值。
Curves.linear或Curves.ease* 不会产生负值,因此它们应该可以一致地工作。
xpcnnkqh2#
将PageView滚动行为设置为库比蒂诺(允许负值)似乎可以解决此问题