如何禁用PageView中边缘的滚动?

时间:2019-07-15 03:16:11

标签: flutter

我希望用户在页面浏览中的页面之间滚动,但是当他们尝试在第一页和最后一页之后滚动时,我不想显示动画。我可以在彩色指示,黑色指示和不滚动之间切换,但是我找不到禁止在边缘滚动的可能性。

如果没有这种可能性,我该如何更改该黑色动画的颜色?

1 个答案:

答案 0 :(得分:1)

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

image-1

出了什么问题

您在顶部未添加PageViewScaffold小部件的情况下添加了Material,这就是PageView子级后面的背景为黑色的原因。

image-2

https://dartpad.dev/c709e410d0a68248ac5b387b3bc6af93

从文档中:

  

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

没有此小部件,您会注意到您的应用可能会占据设备的整个屏幕,包括通知栏,因为它(PageView)不知道状态栏在屏幕上的什么位置

您可以做什么

我注意到PageView内添加的所有子代都有单独的ScaffoldAppBarit's not really necessary to nest scaffolds,您可能想使用TabBarView而不是PageView,然后让父窗口小部件通过TabController处理AppBar的更改。

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

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

https://dartpad.dev/4620ff91444353f5e000d2063594bd96

image-3

选项2。鉴于嵌套Scaffold小部件不是一个好习惯,您可以使用普通的Material小部件将PageView与孩子一起包装用Scaffold小部件包裹。

https://dartpad.dev/43f8730e5592ce1f96193fc01f08a29c

  

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

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

physics: ClampingScrollPhysics(),

但是,当您尝试在屏幕末端滑动时,它仍然具有发光或波纹效果。

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

进一步阅读