首页 > 解决方案 > OnPressed 对字体颜色的影响

问题描述

我正在制作简单的自定义文本按钮

SizedBox(
      height: 40,
      child: Material(
        color: Colors.transparent,
        child: InkWell(
          onTap: (){},
          splashColor: Colors.black12,
          child: Center(
            child: Text(
              'Done',
              style: TextStyle(
                  fontSize: 18, color: Colors.white, fontWeight: FontWeight.w500),
            ),
          ),
        ),
      ),
    )

现在这很好用,但是对 onTap 事件的影响是围绕文本

在此处输入图像描述

如何使该效果仅出现在文本字体上,或者如果不可能,请在点击时更改文本的颜色并在发布时将其更改回

标签: flutterdart

解决方案


要在按下时更改文本的颜色,可以使用onHighlightChangedInkWell 的事件处理程序。

在你的类中声明一个颜色属性:

Color textColor = Colors.white;

并更改您的 InkWell 实施:

InkWell(
   onTap: () {},
   splashColor: Colors.transparent,
   highlightColor: Colors.transparent,
   onHighlightChanged: (value) {
      setState(() {
         textColor = value ? Colors.white70 : Colors.white;
      });
   },
   child: Center(
      child: Text(
         Done',
         style: TextStyle(
            fontSize: 18,
            color: textColor,
            fontWeight: FontWeight.w500
         ),
      ),
   ),
)

笔记:

  1. 您必须将其设置splashColor为透明
  2. 您必须将其设置highlightColor为透明

推荐阅读