Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 保持抽屉在摆动中的状态_Flutter_Dart_State - Fatal编程技术网

Flutter 保持抽屉在摆动中的状态

Flutter 保持抽屉在摆动中的状态,flutter,dart,state,Flutter,Dart,State,我有一个有状态的Scaffold小部件,其中body包含一个具有各种属性的实体列表(例如鞋子或汽车)和Drawer小部件,该小部件最初是空的,除了底部的两个按钮(“取消”和“过滤”)和一个FAB。用户可以使用FAB添加各种过滤器(例如,用户可以添加鞋样过滤器或颜色过滤器) 我遇到的问题如下:假设用户选择各种过滤器并使用它们(即勾选复选框、输入鞋样、更改滑块等)。当用户准备好应用过滤器时,他可以单击“过滤器”按钮,关闭抽屉(onTap->callback->Navigator.of(context

我有一个有状态的
Scaffold
小部件,其中
body
包含一个具有各种属性的实体列表(例如鞋子或汽车)和
Drawer
小部件,该小部件最初是空的,除了底部的两个按钮(“取消”和“过滤”)和一个FAB。用户可以使用FAB添加各种过滤器(例如,用户可以添加鞋样过滤器或颜色过滤器)

我遇到的问题如下:假设用户选择各种过滤器并使用它们(即勾选复选框、输入鞋样、更改滑块等)。当用户准备好应用过滤器时,他可以单击“过滤器”按钮,关闭
抽屉
onTap->callback->Navigator.of(context.pop()
)。但是当用户想要返回时,重新打开
抽屉
,并调整其中一个过滤器,它显然不起作用,因为小部件是从头开始重建的

当前,过滤的工作方式是,一旦按下“Filter”(过滤)按钮,来自添加过滤器的所有不同值都会收集到一个对象
FilterPackage
,然后通过
回调
传递到
Scaffold
小部件,然后将
FilterPackage
中的值应用于实体列表。 我提出的一个解决方案是,将这个
FilterPackage
对象提供给构造函数中的
Drawer
小部件,它将提供重建小部件所需的所有信息

这是一个合理的解决方案吗?我已经做了一些研究,但很难找到一个解决方案,这显然是保存抽屉状态的最佳推荐方法。对于这种情况,使用
PageStorage
/
PageStorageBucket
似乎过于复杂。还是我错了


提前感谢您的指导。

您所说的是持久化应用程序状态管理。没有“明确的、最好的和推荐的方法”可以做到这一点。您可以使用一系列不同的包和模式来实现这一点,并且所有这些包和模式都同样有效(或多或少)。问题不在于使用哪种模式,而在于如何实现特定的模式。(要评论这一点,我们需要看看代码。)@Abion47谢谢你的建议!您所说的是持久化应用程序状态管理。没有“明确的、最好的和推荐的方法”可以做到这一点。您可以使用一系列不同的包和模式来实现这一点,并且所有这些包和模式都同样有效(或多或少)。问题不在于使用哪种模式,而在于如何实现特定的模式。(要评论这一点,我们需要看看代码。)@Abion47谢谢你的建议!