首页 > 解决方案 > 如何禁用 PageView 边缘的动画?

问题描述

我希望用户在 PageView 中的页面之间滚动,但是当他们尝试在第一页和最后一页之后滚动时,我不想向他们显示动画。我可以在彩色动画、黑色动画和无滚动之间切换,但我根本找不到任何禁用动画的可能性。

如果没有这种可能性,我该如何更改该动画的颜色或至少使其透明?

标签: flutter

解决方案


根据您的屏幕截图,我可以说您正在BouncingScrollPhysics使用PageView. iOS 设备通常使用此行为。尽管如此,我还查看了您在此处提供的全部源代码。

图像-1

什么地方出了错

您在顶层添加PageView时没有附带一个Scaffoldor小部件,这就是为什么 的子级后面的背景是黑色的。MaterialPageView

图像-2

https://dartpad.dev/c709e410d0a68248ac5b387b3bc6af93

从文档中:

Scaffold实现了基本的材料设计视觉布局结构。

如果没有这个小部件,您会注意到您的应用程序可能会占据您设备的整个屏幕,包括通知栏,因为它 ( PageView) 不知道状态栏在屏幕中的位置。

你可以做什么

我注意到,在PageViewhas 中添加的所有子级都是单独ScaffoldAppBar实际上并不需要嵌套脚手架,您可能想要使用TabBarView而不是PageView,并让父小部件AppBar通过TabController.

但是,如果您认为重构会花费您太多的精力,请随时查看以下选项,这些选项需要进行最少的更改以满足您的需求:

选项 1。您可以将小部件包装在小Scaffold部件中。

https://dartpad.dev/4620ff91444353f5e000d2063594bd96

图像-3

选项 2。鉴于嵌套Scaffold小部件不是一个好习惯,您可以只使用普通Material小部件来包装您PageView的带有Scaffold小部件的子组件。

https://dartpad.dev/43f8730e5592ce1f96193fc01f08a29c

这些解决方案会将背景颜色PageView从黑色更改为白色。

选项 3。如果你真的想摆脱动画,最简单的破解方法是改变你的滚动物理:

physics: ClampingScrollPhysics(),

但是,当您尝试在屏幕末端滑动时,它仍然会产生发光或涟漪效果。

为了进一步消除这种影响,我将与您分享这些 SO 答案:

进一步阅读


推荐阅读