Flutter:使控制器始终可用

xxe27gdn  于 2023-01-14  发布在  Flutter
关注(0)|答案(1)|浏览(165)

我有一个名为ConnectionManagerControllerGetXController。这个类实际上检查互联网连接。
我有控制器绑定

class ControllerBinding extends Bindings {
  @override
  void dependencies() {
    Get.lazyPut<ConnectionManagerController>(
        () => ConnectionManagerController());
  }
}

我已经在main.dart中将其绑定为初始绑定,如下所示。

runApp(GetMaterialApp(
      initialBinding: ControllerBinding(),
      debugShowCheckedModeBanner: false,
      theme: ThemeData(primarySwatch: Colors.blue, fontFamily: 'Reckless'),
      home: _defaultScreen,
    ));

在我的所有页面的控制器中,我这样称呼它

final ConnectionManagerController netcontroller = Get.find<ConnectionManagerController>();

我在各自的视图中使用netcontroller来显示基于互联网可用性的不同小部件。

    • 问题**

现在,当我转到Page 1Page 2,然后返回到Page 1时,ConnectionManagerController会被删除。因此,很明显,当我从Page 1转到Page 3时,会得到错误ConnectionManagerController not found
我想做的是让ConnectionManagerController一直可用。有人能告诉我哪里出错了吗?任何帮助都将不胜感激。

ajsxfq5m

ajsxfq5m1#

你可以用GetxService代替GetxController
https://github.com/jonataslaw/getx#getxservice
此外,您还可以定义自定义函数,如下所示:

ConnectionManagerController getConnectionManager() {
  ConnectionManagerController _connManager;
  try {
    _connManager = Get.find();
  } catch (e) {
    Get.put(ConnectionManagerController());
    _connManager = Get.find();
  }
  return _connManager;
}

这样您就可以在任何地方调用ConnectionManagerController netcontroller = getConnectionManager(),并且仍然可以获得控制器(如果发生任何错误或应用程序关闭或其他情况,则重新示例化它)

相关问题