Flutter Widget 之ShaderMask

1,178 阅读1分钟

ShaderMask是Flutter的隐藏宝石之一。 ShaderMask可让您将着色器应用于树中的一个或多个widget。 着色器是非常灵活的。

在Flutter中,我们可以使用它们将渐变应用于widget。 我们也可以使用它们来应用图像。

ezgif.com-gif-maker.gif

要将着色器应用于widget,请将窗口widget包装在ShaderMask中,并向ShaderMask提供您要应用的着色器。

ShaderMask(
    shaderCallback: (rect) {
        ...
        return shader;
    },
    child: Container(),
),

如何创建着色器? 幸运的是,Flutter的渐变类有一个方便createShader方法来完成此任务。

LinearGradient(...).createShader(rec);

让我们看一个很酷的效果,并对文本施加一些火焰。将文本包装在ShaderMask中,并为其指定RadialGradient。并为渐变提供一些好的火焰值。

ShaderMask(
    shaderCallback: (bounds) => RadialGradient(
        center: Alignment.topLeft,
        radius: 1.0,
        color: [
            Colors.yellow,
            Colors.deepOrange,
        ],
        tileMode: TileMode.mirror,
    ).createShader(bounds),
    child: const Text(
        'Burning Text!',
        style: TextStyle(color: Colors.white),
    ),
),

燃烧的文字! image.png

着色器可以实现很多炫酷的效果。

如果想了解有关ShaderMask的内容,或者关于Flutter的其他功能,请访问flutter.dev

原文翻译自视频:视频地址