首页 > 解决方案 > 如何仅针对当前页面制作具有不同页面大小的 PageView

问题描述

我想使用 PageView 的原因是它可以在释放拖动时粘在页面上。但我不知道如何实现如下屏幕:

在此处输入图像描述

我想让当前选择的页面显示更大的尺寸,而其他页面显示更小。最直接的方法是将viewportFraction(设置为 0.15)。但在那之后我发现页面需要不同的值viewportFraction

在此处输入图像描述

您可以看到我希望页面之间的空间相等,但只有中间的空间更大。这可能与 PageView 小部件有关吗?或者是否有人有其他可以达到相同结果的解决方法?

如果可能的话,我还想添加GestureDetector到每个页面(可以动画到目标页面)

标签: flutterdartflutter-layout

解决方案


来自 Flutter文档:“页面视图的每个子项都被强制与视口大小相同。”

考虑到这一点,可以在某种程度上使用PageView. 我重复了@croxx5f 的答案,但这是实现它的方法:https ://dartpad.dev/e3fe965b19d36bc6f58bac8029a89251?null_safety=true 。

请注意,它使用填充(或缺少填充)来使活动元素更大。

简而言之,PageView要求元素具有相同宽度的本质。如果要使用PageView,则必须使用填充或类似技术使非活动组件小于活动组件。


推荐阅读