Flutter 页面加载时滚动的推荐方式

Flutter 页面加载时滚动的推荐方式,flutter,Flutter,在我的应用程序中,页面视图中有两个页面。它们中的每一个都有自己的CustomScrollView,使用它可以滚动最终可能在SliverList中生成的一长串项目。这些列表也存储在内存中,因此一旦加载,就会加载数百个项目 这两个页面非常相似,我想记住每个页面的滚动位置,这样我就可以将用户返回到他离开页面的位置。这是很好的工作,经过一些尝试,一个错误,但我相信必须有一个更好的和有效的方法来实现它 现在我只需要在initState中等待几毫秒,直到SliverList的内容加载(希望如此),然后向下滚

在我的应用程序中,页面视图中有两个页面。它们中的每一个都有自己的CustomScrollView,使用它可以滚动最终可能在SliverList中生成的一长串项目。这些列表也存储在内存中,因此一旦加载,就会加载数百个项目

这两个页面非常相似,我想记住每个页面的滚动位置,这样我就可以将用户返回到他离开页面的位置。这是很好的工作,经过一些尝试,一个错误,但我相信必须有一个更好的和有效的方法来实现它

现在我只需要在initState中等待几毫秒,直到SliverList的内容加载(希望如此),然后向下滚动

虽然这是我在其他问题中看到的方法,但我认为这是不可靠的;它可以工作,但是如果我减少了太多的时间(例如Duration.zero),我会得到一个异常,因为ScrollController没有连接到任何视图,或者scroll无法按预期工作

@覆盖
void initState(){
(...)
_mainScrollController.addListener(onMainScrolled);
延迟(持续时间(毫秒:200),(){
_mainScrollController.animateTo(
widget.recalledScrollPosition,//父对象传递的偏移量
持续时间:持续时间(毫秒:1000),
曲线:Curves.easeInOut,
);
});
(...)
}
每次滚动位置发生变化时,“onMainScrolled”方法只是将值回调给父级(页面视图所在的位置):

void onMainScrolled() {
  widget.notifyScrollPosition(_mainScrollController.offset);
}
我还尝试了另一种方法(未成功):

但在这种情况下,每次我返回页面时,滚动偏移量都会越来越小(滚动已经向上移动了一点,一点一点,只有几个像素)。所以我不再使用这种方法了

所以,我想知道什么是正确的方法。谢谢

_mainScrollController = ScrollController(initialScrollOffset: widget.recalledScrollPosition);
_mainScrollController.addListener(onMainScrolled);