flutter - 如何禁用 PageView 边缘的动画?
问题描述
我希望用户在 PageView 中的页面之间滚动,但是当他们尝试在第一页和最后一页之后滚动时,我不想向他们显示动画。我可以在彩色动画、黑色动画和无滚动之间切换,但我根本找不到任何禁用动画的可能性。
如果没有这种可能性,我该如何更改该动画的颜色或至少使其透明?
解决方案
根据您的屏幕截图,我可以说您正在BouncingScrollPhysics
使用PageView
. iOS 设备通常使用此行为。尽管如此,我还查看了您在此处提供的全部源代码。
什么地方出了错
您在顶层添加PageView
时没有附带一个Scaffold
or小部件,这就是为什么 的子级后面的背景是黑色的。Material
PageView
https://dartpad.dev/c709e410d0a68248ac5b387b3bc6af93
从文档中:
Scaffold
实现了基本的材料设计视觉布局结构。
如果没有这个小部件,您会注意到您的应用程序可能会占据您设备的整个屏幕,包括通知栏,因为它 ( PageView
) 不知道状态栏在屏幕中的位置。
你可以做什么
我注意到,在PageView
has 中添加的所有子级都是单独Scaffold
的AppBar
,实际上并不需要嵌套脚手架,您可能想要使用TabBarView
而不是PageView
,并让父小部件AppBar
通过TabController
.
但是,如果您认为重构会花费您太多的精力,请随时查看以下选项,这些选项需要进行最少的更改以满足您的需求:
选项 1。您可以将小部件包装在小Scaffold
部件中。
https://dartpad.dev/4620ff91444353f5e000d2063594bd96
选项 2。鉴于嵌套Scaffold
小部件不是一个好习惯,您可以只使用普通Material
小部件来包装您PageView
的带有Scaffold
小部件的子组件。
https://dartpad.dev/43f8730e5592ce1f96193fc01f08a29c
这些解决方案会将背景颜色
PageView
从黑色更改为白色。
选项 3。如果你真的想摆脱动画,最简单的破解方法是改变你的滚动物理:
physics: ClampingScrollPhysics(),
但是,当您尝试在屏幕末端滑动时,它仍然会产生发光或涟漪效果。
为了进一步消除这种影响,我将与您分享这些 SO 答案:
- 如何去除滚动发光?(适用于安卓)
- 如何去除ios上的过度滚动?(适用于 iOS)
进一步阅读
推荐阅读
- java - apache pdfbox - 如何测试文档是否被展平?
- python - 如何在 Biokit/corrplot 中设置颜色条的模式
- php - 如何在 Json 中搜索并获取子数据
- php - 如何在 fpdf 中添加图像标签
- javascript - VueJS如何在使用下拉选择时过滤数组数据
- javascript - 邮递员:您需要启用 JavaScript 才能运行此应用
- ios - 在模态样式演示iOS13上冻结SFSafariViewController上的横向方向
- python - Unabe 在 Beautifulsoup 中解析大表
- android - 检索 JSON 中的特定字段
- javascript - 在我的 Web 应用程序中为不同的打印对象设置本地打印机