【发布时间】:2021-12-24 14:43:51
【问题描述】:
我正在使用get 包。
这是我的代码的样子,
class MyController extends GetXController{
//code to fetch data from firebase
}
class SecondScreen extends GetView<MyController>{
@override
Widget build(BuildContext context) {
return GetBuilder(
init: MyController(),
builder: (controller) {
return Scaffold(
//code...
);
},
);
}
}
怀疑:
我有一个按钮,我使用它从homePage 导航到secondScreen,每次点击按钮时,控制器MyController 都会再次初始化,data is fetched 也会再次初始化。但我想做一些事情,将第一次初始化的控制器永久保存在内存中。我该怎么做?
我知道,我们可以做这样的事情,
Get.put(Controller(), permanent: true);
但是,在我的代码中,我没有在任何地方使用 Get.put 方法,因为当调用扩展 GetView 的类时,控制器会自动初始化。
【问题讨论】:
-
当你来到 SecondScreen 时,它的 build 方法再次被调用并创建了一个新的 MyController() 实例。我建议在 HomeScreen 中创建 MyController 并通过构造函数将其传递给 Second Screen。在 MyController 中,您可以保留一个标志来检查已获取的数据。
-
好的,那我把控制器永久存入内存,还是没必要?
-
如果您不想再次获取数据,则必须将数据保存在内存中。如果您想在应用关闭后永久保存,您可以使用本地数据库。
标签: flutter dart flutter-getx