![](/img/trans.png)
[英]Change Background Color of Elevated Button OnPressed in Flutter
[英]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.