【问题标题】:Is it possible to access GetxController value from another GetxController? Flutter Get Package是否可以从另一个 GetxController 访问 GetxController 值? Flutter 获取包
【发布时间】:2021-07-17 07:19:29
【问题描述】:

我是 Flutter 和 GetX 的新手https://pub.dev/packages/get

我能否从控制器内的“另一个控制器”访问值?

它们都将被初始化,但我不想在屏幕/小部件/处理程序等处传递“id”,我只想在控制器之间进行(如果可能的话)

这是一个例子

  1. 这是我的第一个控制器

    class firstController 扩展 GetxController { var id = 1; }

  2. 这是我的第二个控制器,我想从 firstController

    访问 id

    class secondController 扩展 GetxController { var mappedIdFromFirstController = 1; }

我知道这听起来很傻,但我喜欢探索事物(笑)

提前谢谢你!

【问题讨论】:

    标签: flutter dart flutter-getx


    【解决方案1】:

    是的,你可以这样做:

    class yourWidget extends StatelessWidget{
         FirstController fCTRL = Get.put(FirstController());
         SecondController sCTRL = Get.put(SecondController());
         //now you can have 
         print(fCTRL.id);  //1
         print(sCTRL.something);
    }
    

    【讨论】:

      【解决方案2】:

      如果您的意思是直接从另一个控制器类访问一个控制器,那么可以。

      class FirstController extends GetxController {
        int id = 1;
      }
      
      class SecondController extends GetxController {
        int idFromFirstController = Get.find<FirstController>().id;
      
        @override
          void onInit() {
            super.onInit();
            debugPrint('$idFromFirstController'); // prints 1
          }
      }
      

      您唯一需要确保的是首先初始化依赖项。因此,使上述示例工作的一种方法是在 main 中初始化两者。

      void main() {
        Get.put(FirstController()); // make sure this is first
        Get.put(SecondController());
        runApp(MyApp());
      }
      

      【讨论】:

      • 你好,这正是我想做的,谢谢!
      • 我应该关注这种方法吗?文档中的任何地方是否推荐或警告过?
      • 我想这更深入地探讨了一般架构问题。但是 GetX 文档有依赖于其他控制器的控制器示例,所以我不用担心。拥有一些不依赖于其他任何东西的核心控制器可能是个好主意,比如数据库和 API 调用等......
      • 如何监听第一个控制器的 ID 变量,以便第二个控制器对 ID 变量的更改做出反应?
      • @fractal 通过添加.obs 使id 可观察,然后使用ever 函数订阅它。你可以在这里看到ever的解释stackoverflow.com/questions/67134177/…
      猜你喜欢
      • 2022-01-18
      • 2021-11-13
      • 2022-12-02
      • 2021-08-23
      • 1970-01-01
      • 2021-02-25
      • 2021-07-30
      • 2021-06-15
      • 2021-12-24
      相关资源
      最近更新 更多