当 ChangeNotifiers 触发时,sliverpersistentheader 中的刷新过多

Too much refresh in sliverpersistentheader when ChangeNotifiers trigger

我正在使用 SliverPersistentHeader(SPH,通过委托,充当 AppBar)制作一个 flutter 应用程序,它应该显示更新的 user-specific score/points/credits。这个值在后台定期重新计算,我通过 ChangeNotifier 和围绕 Sliver 委托中的 Widgets 构建的 ChangeNotificationProvider 刷新它。

每次我触发 notificationListener() 时,它都会根据需要触发 SPH 的重绘;但它也重新绘制了下面的完整条子内容并重置了滚动位置。

我在 header 下方还有其他 Sliver 项目(例如网格),我在其中按需要进行重绘,并且没有改变整个 Sliver 的滚动。

任何ideas/hints如何在不更改下方滚动条的情况下刷新 SPH?

快速更新:SPH 包含一个带有定位小部件的堆栈;如果这可能是相关的。

好的; "business model" 是我的错……我用来存储乐谱的对象还包含主滚动视图中显示的其他列表。在我更新分数并调用 notificationListener() 后,它会重新绘制分数和列表并将滚动位置重置为顶部。

我将我想在 SPH 中显示的值取出到另一个对象中,并仅对该实例的重绘做出反应。此包装器对象仍然是应用程序根业务对象的一个​​元素。

这可以防止重绘整个应用程序,而重绘会导致不希望的重新定位滚动回顶部。

所以问题不在于 Sliver,而在于我缺乏提供者和 flutter 小部件树的经验。每天学习新东西。