我希望用户在页面浏览中的页面之间滚动,但是当他们尝试在第一页和最后一页之后滚动时,我不想显示动画。我可以在彩色指示,黑色指示和不滚动之间切换,但是我找不到禁止在边缘滚动的可能性。
如果没有这种可能性,我该如何更改该黑色动画的颜色?
答案 0 :(得分:1)
根据您的屏幕截图,我可以说您正在将BouncingScrollPhysics
用于PageView
。此行为通常是iOS设备使用的。尽管如此,我也查看了您提供的here的全部源代码。
出了什么问题
您在顶部未添加PageView
或Scaffold
小部件的情况下添加了Material
,这就是PageView
子级后面的背景为黑色的原因。
https://dartpad.dev/c709e410d0a68248ac5b387b3bc6af93
从文档中:
Scaffold
实现了基本的材料设计视觉布局结构。
没有此小部件,您会注意到您的应用可能会占据设备的整个屏幕,包括通知栏,因为它(PageView
)不知道状态栏在屏幕上的什么位置
您可以做什么
我注意到PageView
内添加的所有子代都有单独的Scaffold
和AppBar
,it's not really necessary to nest scaffolds,您可能想使用TabBarView
而不是PageView
,然后让父窗口小部件通过TabController
处理AppBar
的更改。
但是,如果您认为重构会花费太多的精力,请随时查看以下选项,这些更改需要进行最小的更改才能满足您的需求:
选项1。。您可以将小部件包装在Scaffold
小部件中。
https://dartpad.dev/4620ff91444353f5e000d2063594bd96
选项2。鉴于嵌套Scaffold
小部件不是一个好习惯,您可以使用普通的Material
小部件将PageView
与孩子一起包装用Scaffold
小部件包裹。
https://dartpad.dev/43f8730e5592ce1f96193fc01f08a29c
这些解决方案会将
PageView
的背景颜色从黑色更改为白色。
选项3。如果您真的想摆脱动画,最简单的破解方法是更改滚动物理:
physics: ClampingScrollPhysics(),
但是,当您尝试在屏幕末端滑动时,它仍然具有发光或波纹效果。
为进一步消除这种影响,我将与您分享以下SO答案:
进一步阅读