冗长的上下文,滚动到底部以获取特定问题:
我有一个带有自定义小部件 ( EntrySearch
) 的页面,其中包含一个ListView
和一个搜索栏。当用户单击列表视图中的某个项目时,我会推送一个具有相同列表视图的新页面和一个显示项目详细信息的面板。列表视图的项目从异步查询支持的 Stream 延迟加载(流暂停,直到用户滚动到到目前为止获取的元素的末尾)。每当用户在搜索栏中键入新字符串时,都会替换流。
我希望小部件在两个页面上具有相同的列表视图(元素、滚动位置等)和搜索栏状态。
我可以通过针对跨页面共享小部件状态的类似问题(例如这个)提出的许多状态管理解决方案中的任何一种来实现这一点。但是,因为我的 ListView 是由异步流以及大量其他状态支持的,所以这变成了缓存迄今为止获取的结果的总痛苦,创建一个从旧流停止的地方开始的新流(不能有两个 StreamBuilders由相同的非广播流支持)等等。我真的很想避免这种混乱的解决方案。
给我想要共享全局键的顶级小部件是一行(而不是〜50),并导致跨页面的共享状态。但是,当我推送新页面时,旧页面停留在小部件树中处于待机状态,因此我在小部件树中同时拥有两个具有相同全局键的小部件时收到错误消息。我可以在第一页上设置maintainState
,false
但是当我弹出第二页时,第一页显示为黑屏。
在那儿:
- 一种在两个页面上使用全局键小部件的方法,它们不会同时在树中
- 专门用于跨两个不同页面重用小部件的专用键
- 我没有想到的其他方法?
这是我的带有两个页面的小部件树。EntrySearch
是我想在两个页面中重复使用的小部件。
如果上述方法都不起作用,我将不得不使用传统的状态管理策略,该策略至少会更加冗长和容易出错一个数量级。