Flutter GetX 在 Elevated Button onPressed 中调用更新的变量

Flutter GetX calling updated variables in Elevated Button onPressed

我是 Flutter 的新手,正在努力了解 GetX 的用法。我看过一些教程,并一直在网上搜索解决方案。我试图禁用一个按钮,直到 2 个变量变为真。在我的控制器中,我有一个方法可以用来检查两个变量,这些变量又会更改我在另一个文件中使用的 bool。我似乎无法在 elevatedbutton 小部件中找到使用 Obx() 方法的合适位置。

 class RegistrationController extends GetxController {
      final readTerms = false.obs;
      final readPrivacy = false.obs;
      final enableIntroButton = false.obs;
    
      void isIntroButtonDisabled() {
        if (readTerms.value && readPrivacy.value) {
          enableIntroButton.value = true;
          debugPrint('Button is now enabled');
        }
      }
    }

在我的启动屏幕中,我在 class 的顶部创建了我的控制器实例以供使用,在我的 ElevatedButton 小部件中,我想出了如何在 child 上使用 Obx:属性 但同样的技术似乎在 onPressed 部分不起作用

ElevatedButton(
                  child: Obx(() => regController.enableIntroButton.value
                      ? Text(
                          'Let\'s Get Started',
                          style: TextStyle(fontSize: 20),
                        )
                      : Text('Read Terms & Privacy First')),
                  onPressed: () => regController.enableIntroButton.value
                      ? null
                      : Get.to(() => PhoneRegistrationScreen()),

小部件的其余部分是样式,所以我没有包含它。

任何帮助都会很棒。我刚刚学习完有状态小部件和使用 setState 哈哈。所以现在发现了 GetX,我正在尝试重新学习状态管理。

因此,经过反复试验和更多在线搜索后,我意识到我需要澄清 regController.value 等于 false 或 true 而不是仅仅声明变量。

这就是我所拥有的

onPressed: () => regController.enableIntroButton.value
                      ? null
                      : Get.to(() => PhoneRegistrationScreen()),

这就是我需要做的...

onPressed: () => regController.enableIntroButton.value == false
                      ? null
                      : Get.to(() => PhoneRegistrationScreen()),

尽管我尝试删除子项上方的 Obx() 方法:属性 但它似乎不像 onPressed 那样工作:属性 所以我将其保留原样。