Flutter:在允许列表滚动之前创建一个收缩中心项目的滚动视图

Flutter: Creating a scroll view that contracts center item before allowing the list to scroll

我正在创建一个滚动视图,用一些额外的 space 垂直填充该中心项目。我想完成两件事:

1- 以用户移动手指的相同速率缩小中心项目的填充。例如,如果中心项目的内边距为 50 像素,而用户将手指移动了 10 像素,那么我想将内边距减少到 40。

2- 我想阻止列表视图实际滚动,直到中心项目的填充为 0。一旦中心项目的填充为 0,列表视图应正常滚动。

我有点迷路了。我一直在尝试实现我自己的 ScrollController 和 ScrollPhysics,但我一直无法实现我正在寻找的东西。我还看到 Flutter 中有一个名为 ScrollPosition 的 class 控制每个滚动小部件的位置,但我一直无法弄清楚如何使用它们来完成我正在寻找的行为。

有人能给我指出正确的方向吗?

修改ListView的physics属性,NeverScrollablePhysics()不允许滚动

也许使用 GestureDetector 来检测滑动。

不过请注意此小部件的放置。 它会干扰 listView 的正常滚动。

尝试使用 animationController 进行试验,而不是多次调用 setState(), 多次刷新屏幕只是为了改变padding太浪费了。