如何在getx中将变量重置为默认值?
How to reset variable to default values in getx?
我正在创建一个有多个问题(如测验)的应用程序,我正在使用 Getx 进行状态管理。
在main方法中我初始化控制器如下
void main() {
Get.put(HomeScreenController());
Get.put(QuestionsController());
runApp(MyApp());
}
在主屏幕中,我有一个综合浏览量,我正在使用 HomeScreenController() 来管理它。
页面视图的最后一页有一个返回初始页面的按钮。对于我的情况,我想将两个控制器中的所有变量重置为其初始值。
我已经尝试过一种解决方案,它有效,但我觉得对于其他具有如此多变量的控制器来说,它正在调用一种手动重置变量的方法,这很乏味。
我尝试过的另一个解决方案是在用户单击调用 Get.put(HomeScreenController()) 的按钮时处理控制器;在主屏幕的构建方法中。
onPressed: () {
qCon.dispose();
controller.dispose();
Navigator.pushReplacementNamed(context, HomeWrapper.id);
},
但我收到一条错误消息
A HomeScreenController was used after being disposed.
'Once you have called dispose() on a HomeScreenController, it can no longer be used.
除了手动更新变量之外,还有什么可以做我想做的吗?
更新:结果是
Get.reset();
在主屏幕中初始化控制器时执行此操作
也在打电话
Get.put(ControllerName());
在构建方法中会重新初始化控制器
我正在创建一个有多个问题(如测验)的应用程序,我正在使用 Getx 进行状态管理。
在main方法中我初始化控制器如下
void main() {
Get.put(HomeScreenController());
Get.put(QuestionsController());
runApp(MyApp());
}
在主屏幕中,我有一个综合浏览量,我正在使用 HomeScreenController() 来管理它。 页面视图的最后一页有一个返回初始页面的按钮。对于我的情况,我想将两个控制器中的所有变量重置为其初始值。
我已经尝试过一种解决方案,它有效,但我觉得对于其他具有如此多变量的控制器来说,它正在调用一种手动重置变量的方法,这很乏味。
我尝试过的另一个解决方案是在用户单击调用 Get.put(HomeScreenController()) 的按钮时处理控制器;在主屏幕的构建方法中。
onPressed: () {
qCon.dispose();
controller.dispose();
Navigator.pushReplacementNamed(context, HomeWrapper.id);
},
但我收到一条错误消息
A HomeScreenController was used after being disposed.
'Once you have called dispose() on a HomeScreenController, it can no longer be used.
除了手动更新变量之外,还有什么可以做我想做的吗?
更新:结果是
Get.reset();
在主屏幕中初始化控制器时执行此操作
也在打电话
Get.put(ControllerName());
在构建方法中会重新初始化控制器