无法覆盖已禁用的按钮颜色

问题描述 投票: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

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

(我已经尝试设置ThemeData的属性disabledColor,但没有任何改变)

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.