如何让Flutter GetXController永久存在内存中?
How to put Flutter GetXController permanently in memory?
我正在使用 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 方法,因为当 class 扩展 GetView 被调用时,控制器会自动初始化。
嗯,其实你是putting/initializingMyController
。只是不在 GetX 依赖容器内。
因为你在做:
GetBuilder(
init: MyController(),
....
)
你应该做的是:
GetBuilders(
init: Get.put(MyController()),
....
)
这样您就可以让 GetX 依赖项管理器管理您的依赖项。它足够聪明,知道那条路线在后台,所以不会从内存中删除。
我正在使用 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 方法,因为当 class 扩展 GetView 被调用时,控制器会自动初始化。
嗯,其实你是putting/initializingMyController
。只是不在 GetX 依赖容器内。
因为你在做:
GetBuilder(
init: MyController(),
....
)
你应该做的是:
GetBuilders(
init: Get.put(MyController()),
....
)
这样您就可以让 GetX 依赖项管理器管理您的依赖项。它足够聪明,知道那条路线在后台,所以不会从内存中删除。