如何将Flutter GetXController永久放入内存中?

May*_*wal 2 dart flutter flutter-getx

我正在使用获取包。

这是我的代码的样子,

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...
        );
      },
    );
}
}
Run Code Online (Sandbox Code Playgroud)

疑问: 我有一个按钮,使用它导航到secondScreenfrom homePage,每次我点击该按钮时,控制器MyController都会再次初始化,如此反复data is fetched。但我想做一些事情,将第一次初始化的控制器永久保留在内存中。我怎样才能做到这一点?

我知道,我们可以做这样的事情, Get.put(Controller(), permanent: true); 但是,在我的代码中,我没有在任何地方使用 Get.put 方法,因为当调用扩展 GetView 的类时,控制器会自动初始化。

S. *_*GIR 5

好吧,实际上你正在放置/初始化MyController. 只是不在 GetX 依赖容器内。因为你正在做:

GetBuilder(
 init: MyController(),
 .... 
)
Run Code Online (Sandbox Code Playgroud)

你应该做的是:

GetBuilders(
 init: Get.put(MyController()),
 .... 
)
Run Code Online (Sandbox Code Playgroud)

这样您就可以让 GetX 依赖项管理器来管理您的依赖项。它足够聪明,知道该路由位于返回堆栈上,因此不会从内存中删除。


SER*_*ARI 5

在使用“get.put”的地方添加“permanent”将解决问题

  • Get.put(Controller(), 永久: true);

我的小部件没有永久保留,这就是我解决它的方法