无法覆盖禁用的按钮颜色

问题描述 投票:0回答:1

我感觉很愚蠢:当按钮被禁用时,我无法覆盖按钮的颜色。

代码看起来不错,我可以保证

_isDisabled
的逻辑是正确的。

按钮的样式为:

ElevatedButton.styleFrom(
   backgroundColor: _isDisabled 
     ? Colors.amber
     : MyTheme.getCiSonoButtonColor(context: context),
   padding: const EdgeInsets.symmetric(
     horizontal: 50, vertical: 16),
   shape: RoundedRectangleBorder(
      borderRadius: BorderRadius.circular(30),
   ),
),

如您所见,我尝试将按钮的颜色(禁用时)设置为琥珀色,但结果是浅灰色。我真的不知道为什么。似乎禁用模式有一个预定义的颜色。

如何解决这个恼人的问题?

为了清楚起见,我附上了应用程序的屏幕截图(查看灰色按钮):

enter image description here

NB:当逻辑将

_isDisabled
变量设置为 false 时,按钮看起来就像我想要的那样。问题出在禁用时。

(我已经尝试设置

disabledColor
的属性
ThemeData
但没有任何改变)

flutter button material-design themes
1个回答
0
投票

您可以直接在 styleFrom 上提供

disabledBackgroundColor
并在
onPressed

上设置 null
ElevatedButton(
  style: ElevatedButton.styleFrom(
    backgroundColor: Colors.grey,
    disabledBackgroundColor: Colors.amber,
  ),
  onPressed: _isDisabled ? null : () {},
  child: Text("Button"),
)
© www.soinside.com 2019 - 2024. All rights reserved.