我有一个有状态的Scaffold
小部件,其中body
包含具有各种属性(例如鞋子或汽车)的实体的列表,以及Drawer
小部件,除了它最初是空的底部的两个按钮(“取消”和“过滤器”)和一个FAB。用户可以使用FAB添加各种过滤器(例如,用户可以添加鞋号过滤器或颜色过滤器)。
我遇到的问题如下:假设用户选择了各种过滤器并使用它们(例如,勾选复选框,输入鞋号,更改滑块等)。当用户准备好应用过滤器时,他可以单击“过滤器”按钮,该按钮将关闭Drawer
(onTap -> callback -> Navigator.of(context).pop()
)。但是,当用户想要返回时,重新打开Drawer
并调整其中一个过滤器,则显然是不起作用的,因为该窗口小部件是从头开始重建的。
当前,过滤的工作方式是,一旦按下“过滤器”按钮,来自添加过滤器的所有各种值都将收集到对象FilterPackage
中,然后通过callback
进行传递到Scaffold
小部件,然后将FilterPackage
中的值应用于实体列表。
我想到的一种解决方案是,将此FilterPackage
对象提供给其构造函数中的Drawer
小部件,该控件将提供重建小部件所必需的所有信息。
这是一个合理的解决方案吗?我已经进行了一些研究,但是一直在努力寻找解决方案,以明确保留抽屉状态的最佳和推荐方法。在这种情况下,使用PageStorage
/ PageStorageBucket
似乎过于复杂。还是我错了?
谢谢您的指导。