【发布时间】:2022-12-09 19:34:31
【问题描述】:
我目前正在实施一个 ListView,它试图将当前“选定”项目保留在 ListView 的中间。
这是通过实现 PageScrollPhysics 看起来很熟悉的自定义 ScrollPhysics 来简单实现的
但是,如果屏幕的方向发生变化(因此 ListView 的尺寸发生变化),中间的项目将不再正确。我注意到我们可以在名为 adjustPositionForNewDimensions 的 ScrollPhysics 中覆盖一个方法,如果 ListView 的尺寸以编程方式更改,该方法可以完美运行,但如果方向更改,则不会以某种方式触发此方法。
此方法应该从 here 调用,而 here 又调用 here。但是不知何故在 ListView 上它的尺寸改变变量 haveDimensions 是真的但是在方向改变(因此尺寸改变)之后它的 false 导致跳过 correctForNewDimensions 检查。
我不完全清楚为什么这个变量是false,即使尺寸确实发生了变化。我错过了什么,还是应该以不同的方式实现这种行为?
【问题讨论】:
标签: flutter listview scroll orientation