首页 > 解决方案 > 使用 NestedScrollView,向上滚动会将其他选项卡重置为上方

问题描述

在将 SliverAppBar 与 NestedScrollView 中的某些选项卡结合使用时,使用 PageStorageKey 可能无法保持滚动位置。

模式 A:

将左侧选项卡滚动到中间并切换到右侧选项卡。将右选项卡滚动到中间并返回到左选项卡。在这种情况下,左选项卡保持滚动位置。

模式 B:

将左侧选项卡滚动到中间并切换到右侧选项卡。显示右侧选项卡的顶部并向上滚动,返回左侧选项卡。在这种情况下,左侧选项卡不保留滚动位置(滚动位置将为 0)

无论您显示哪个选项卡,滚动到顶部并展开 SliverAppBar。NestedScrollview 中所有 ScrollView 的位置似乎都重置到了顶部。

即使在模式 B 的情况下,如何保持左侧标签滚动位置?

这是我的代码。 https://gist.github.com/ysknsn/d90a84a180e32de5b0691de874c65d55

这是屏幕截图。 在此处输入图像描述 (SliverAppBar 向下滚动时收缩,向上滚动时展开)

任何建议都是有帮助的。谢谢。

标签: flutterdartflutter-sliver

解决方案


您是否尝试在您的状态下存储滚动控制器的当前滚动偏移量?然后,您可以将此值作为初始滚动偏移量传递给 build 方法。


推荐阅读