如何根据 MaterialState 更改 flutter 按钮边框颜色?

How to change flutter button border color based on MaterialState?

有没有办法根据 MaterialState 更改 flutter MateriaButton 边框颜色(或任何其他属性)?

ButtonStyle(
  backgroundColor: MaterialStateProperty.resolveWith<Color?>((states) => ...),
  overlayColor: MaterialStateProperty.resolveWith<Color?>((states) => ...),
  side: MaterialStateProperty.resolveWith<BorderSide?>((states) => {
    if (states.contains(MaterialState.pressed)) {
      return BorderSide(color: Colors.Blue);
    }
    return BorderSide(color: Colors.Red);
  }),
)

尝试这样设置边框,侧面好像没有任何效果,但一直是红色。 backgroundColor 和 overlayColor 似乎都根据状态而改变,但侧面 属性 不会。有办法实现吗?

编辑:以这种方式设置边 属性 毕竟似乎可行。 @nagendra nag 提出的方法也很有效。实际问题似乎是动画似乎很慢,所以除非按下按钮片刻,否则变化是不可见的。

试试这个

shape: MaterialStateProperty.resolveWith(
  (states) {
    if (states.contains(MaterialState.focused)) {
      return const RoundedRectangleBorder(
        side: BorderSide(color: Colors.red),
      );
    }
    if (states.contains(MaterialState.pressed)) {
      return const RoundedRectangleBorder(
        side: BorderSide(color: Colors.green),
      );
    }
    if (states.contains(MaterialState.hovered)) {
      return const RoundedRectangleBorder(
        side: BorderSide(color: Colors.blue),
      );
    }
  },
),
),