簡體   English   中英

Flutter GetX 在 Elevated Button onPressed 中調用更新的變量

[英]Flutter GetX calling updated variables in Elevated Button onPressed

我是 flutter 的新手,我正試圖圍繞 GetX 的使用。 我看過一些教程,並一直在網上尋找解決方案。 我試圖禁用一個按鈕,直到 2 個變量變為真。 在我的 controller 中,我有一個方法可以用來檢查這兩個變量,這反過來會改變我在另一個文件中使用的 bool。 我似乎無法在提升按鈕小部件中找到使用 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 的頂部創建了我的 controller 實例以供使用,在我的 ElevatedButton 小部件中,我想出了如何在 child: property 上使用 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()),

小部件的 rest 是樣式,所以我沒有包括它。

任何幫助都會很棒。 我剛剛完成了關於有狀態小部件和使用 setState 的學習。 所以現在發現了 GetX,我正在嘗試重新學習 state 管理。

因此,經過一些試驗和錯誤以及更多的在線搜索,我意識到我需要澄清 regController.value 等於 false 或 true,而不是僅僅聲明變量。

所以這就是我所擁有的

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

這就是我需要做的......

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

盡管我嘗試在 child: 屬性中刪除 Obx() 方法,但它似乎不像 onPressed: 屬性那樣工作,所以我將其保留原樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM