带有透明文本的 Flutter 按钮

标签 flutter dart flutter-layout

Flutter中如何做一个文字透明的按钮,让背景图片透过文字看到?我尝试用一​​个凸起的按钮,然后在文本小部件周围放置一个不透明小部件,但这只显示按钮的背景颜色。当我搜索相关问题时,我只能找到这个 android 问题:Android button with transparent text

示例:https://i.sstatic.net/3W4u3.png

最佳答案

您可以将 ShaderMaskblendMode: BlendMode.srcOut 一起使用。 Container装饰器中的ClipRRectborderRadius: BorderRadius.circular(8)就是用来制作圆角的。 GestureDetector 用于实现按钮功能。

Container(
  color: Colors.purpleAccent,
  child: Center(
    child: GestureDetector(
      onTap: () {
        print('tapped');
      },
      child: ClipRRect(
        borderRadius: BorderRadius.circular(8),
        child: ShaderMask(
          shaderCallback: (rect) =>
          LinearGradient(colors: [Colors.black], stops: [0.0])
          .createShader(rect),
          blendMode: BlendMode.srcOut,
          child: Container(
            padding: const EdgeInsets.symmetric(horizontal: 20.0),
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(8),
            ),
            child: Text(
              'Press me',
              style: TextStyle(
                fontSize: 36,
                fontWeight: FontWeight.bold,
              ),
            ),
          ),
        ),
      ),
    ),
  ),
)

结果:

res

关于带有透明文本的 Flutter 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63586325/

相关文章:

android - 复选框未勾选

json - 如何从dart中的Json文件读取对象并映射到变量?

json - Flutter/Dart Json序列化

flutter - BLoC:多次调用监听回调

flutter - 如何更改焦点上的 Flutter TextField 边框颜色?

flutter - 如何获取小部件在屏幕中的位置(最好是在 Offset 中)?

flutter - 如何删除或增加导航栏中选定的装饰

unit-testing - `TypeMatcher` 与 `throwsA` 一起使用时不起作用

dart - 检测用户是否在 flutter 上按下 home/tab 的代码?

flutter - 如何在Flutter中将渐变颜色设置为图标?