Flutter:如何使用 MaterialStateProperty 设置 ElevatedButton 的 minimumWidth?

问题描述

我一直对此感到困惑。我希望 2 个具有不同文本的按钮具有相同的宽度。

我通过将 ElevatedButton 设为 SizedBox 的子项来实现这一点,但我担心如果用户认字体大小设置为大,则 Button 标题文本将被剪裁。

我可以在 ElevatedButton 的样式属性上放置一个“minimumSize”:

style: ButtonStyle(minimumSize: ),

但我不知道如何设置 minimumSize,它想要这个:

{MaterialStateProperty minimumSize} 类型: MaterialStateProperty 按钮本身的最小尺寸。 按钮所在的矩形的大小可能更大 点击目标尺寸

我不知道如何设置 MaterialStateProperty,Android Studio 抱怨“无法实例化抽象类”。帮助!

解决方法

当您第一次使用它时,这个 MaterialStateProperty 会令人困惑。如果您想为 minimumSize 中所有可能的状态(悬停、聚焦、按下等)设置 MaterialState 相同,您可以使用:

MaterialStateProperty.all(Size(width,height))

或者,如果您想为不同的状态使用不同的 minimumSize,那么这样做的方法是:

MaterialStateProperty.resolveWith((states) {
  if (states.contains(MaterialState.disabled)) {
    return Size(width,height);
  }
  return Size(width,height);
}