【问题标题】:How to use ever() with Flutter getx variable in GetxController if I didn't add .obs如果我没有添加 .obs,如何在 GetxController 中使用 ever() 和 Flutter getx 变量
【发布时间】:2021-08-24 05:12:21
【问题描述】:

我正在使用 Flutter getx 包。

我知道如何将“ever”与这样的 (.obs) 变量一起使用

class CountController extends GetxController {
    final count = 0.obs;
            
    @override
    void onInit() {
        ever(count1, (_) => print("$_ has been changed"));
        super.onInit();
    }
    
}

但是如果变量没有 (.obs),如何使用“ever()”或在变量更改时触发特定回调,因为我在我的视图中使用 GetBuilder(不是:Obx 或 GetX)

【问题讨论】:

    标签: flutter flutter-getx


    【解决方案1】:
    class AnyScreen extends StatelessWidget {
    
    final controller = Get.put(CounterController());
    
    @override
    Widget build(BuildContext context) {
    
    ever(controller.counter, (value) => print("$value has been changed"));
    
    }
    
    @override
    Widget build(BuildContext context) {
      return Text("whatever!");
    }
    
    }
    

    注意:在启动 Controller 或 Class 时应始终使用 Workers,因此应始终在 onInit(推荐)、Class 构造函数或 StatefulWidget 的 initState 上(在大多数情况下不推荐这种做法,但应该'没有任何副作用)

    docs

    【讨论】:

      【解决方案2】:

      将此代码添加到您的主文件中

      GetBuilder<CountController>(
       init:CountController (),
       builder: (controller){
        return Text("value: ${controller.count}");
       }
      )
      

      它会起作用的 并且您的 countcontroller 文件需要像这样更新

      class CountController extends GetxController {
          final count = 0;
              
                  
          void update(){
             count++;
             update();
      
          }
          
      }
      

      【讨论】:

      • 对不起,这不是我的问题。我的问题是:当事件发生时变量没有 (.obs) 时,如何使用“ever”或触发特定回调;
      猜你喜欢
      • 2021-06-07
      • 2023-02-15
      • 2021-11-11
      • 2021-12-26
      • 2021-01-07
      • 2021-11-14
      • 2021-03-15
      • 2022-01-18
      • 2021-11-06
      相关资源
      最近更新 更多