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

Posted

技术标签:

【中文标题】Flutter 2.0 - 按下时如何更改 TextButton 的初始颜色?【英文标题】:Flutter 2.0 - How to change TextButton splash color when pressed? 【发布时间】:2021-07-02 00:28:49 【问题描述】:
FlatButton is deprecated and shouldn't be used. Used TextButton instead.

在我之前的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),
  ),
),
overlayColor is used to indicate that the button is focused, hovered, or pressed.

但我找不到这个overlayColor

【问题讨论】:

按下时可以使用setState改变颜色 @AkshayNayka ,我的意思是当你按下按钮时,它的 Splash 颜色会慢慢地填充按钮。它不是按钮颜色。 【参考方案1】:

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

TextButton(
  style: ButtonStyle(
    overlayColor: MaterialStateProperty.all(Colors.________),
  ),
)

【讨论】:

【参考方案2】:
TextButton(            
 style: ButtonStyle(
  overlayColor: MaterialStateColor.resolveWith((states) => Colors.red),
  ),
 child: ..., 
)

引用Flutter TextButton splashColor property

【讨论】:

【参考方案3】:

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

TextButton(
  style: TextButton.styleFrom(primary: Colors.red),
  child: const Text('Text Button'),
  onPressed: () ,
)

Live Demo

【讨论】:

【参考方案4】:

您可以像这样更改 Splash 颜色:

            Theme(
              data: ThemeData(
                splashColor: Colors.red,
                highlightColor: Colors.black.withOpacity(.5),
              ),
              child: ListTile(
                  title: Text(
                    "New theme splash",
                    textAlign: TextAlign.center,
                  ),
                  onTap: () ),
            ),

【讨论】:

以上是关于Flutter 2.0 - 按下时如何更改 TextButton 的初始颜色?的主要内容,如果未能解决你的问题,请参考以下文章

按下时如何更改 IconButton 的图标

在按下时查看:按下时更改背景颜色?如何显示正在按下视图?

鼠标左键按下时如何更改鼠标光标?

如何在焦点/按下时更改 ImageButton 的色调

使用 TouchableHighlight 在 React Native 中按下时如何更改按钮颜色?

SwiftUI,按下时如何更改视图(不使用按钮)颜色?