Flutter 2.0 - 如何更改 TextButton 按下时的初始颜色?

Rai*_*ado 9 dart flutter flutter-layout

FlatButton is deprecated and shouldn't be used. Used TextButton instead.
Run Code Online (Sandbox Code Playgroud)

在我以前的FlatButton小部件上,我能够在按下时更改启动颜色。但现在我正在使用TextButton小部件,如何在小部件上MaterialApp ThemeData或直接在TextButton小部件上有效地更改其颜色。

目前这是我的 TextButton

TextButton(
  style: TextButton.styleFrom(
    primary: Colors.red,
    textStyle: TextStyle(
      color: Colors.black45,
      fontFamily: "Courier Prime",
    ),
    backgroundColor: Colors.transparent,
  ),
  onPressed: () {},
  child: Text(
    "Student",
    style: TextStyle(fontWeight: FontWeight.bold),
  ),
),
Run Code Online (Sandbox Code Playgroud)
overlayColor is used to indicate that the button is focused, hovered, or pressed.
Run Code Online (Sandbox Code Playgroud)

但我找不到这个overlayColor

Ars*_*eem 11

首先请记住,TextButton 的主要属性设置其文本和图标的颜色。它不会改变波纹颜色。其次,在 Textbutton 中没有直接属性来更改启动颜色。因此,如果您想将初始颜色更改为透明,可以这样做。

TextButton(
  style: ButtonStyle(
    overlayColor: MaterialStateProperty.all(Colors.________),
  ),
)
Run Code Online (Sandbox Code Playgroud)


Nea*_*arl 6

TextButton您可以使用 helper 方法快速设置 a 的初始颜色TextButton.styleFrom()。请注意,这实际上会根据前景色设置前景色和飞溅颜色,这在大多数情况下都是您想要的:

TextButton(
  style: TextButton.styleFrom(primary: Colors.red),
  child: const Text('Text Button'),
  onPressed: () {},
)
Run Code Online (Sandbox Code Playgroud)

现场演示


s.a*_*m.i 4

TextButton(            
 style: ButtonStyle(
  overlayColor: MaterialStateColor.resolveWith((states) => Colors.red),
  ),
 child: ..., 
)
Run Code Online (Sandbox Code Playgroud)

引用Flutter TextButton splashColor 属性