【问题标题】:Put LinearGradient in front of Widget using ShaderMask使用 ShaderMask 将 LinearGradient 放在 Widget 前面
【发布时间】:2019-08-12 14:37:17
【问题描述】:

我正在尝试在 Flutter 中实现这一点:

所以我做了这个StatelessWidget

class Scrim extends StatelessWidget {
  Scrim({
    @required this.child
  });

  final Widget child;

  @override
  Widget build(BuildContext context) {
    return ShaderMask(
      shaderCallback: (Rect bounds) {
        return LinearGradient(
          begin: Alignment.topCenter,
          end: Alignment.bottomCenter,
          colors: [Colors.black45, Colors.transparent],
        ).createShader(bounds);
      },
      blendMode: BlendMode.darken,
      child: child,
    );
  }
}

但我找不到blendMode 让它看起来像我想要的那样。有什么建议吗?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    为了达到这个效果,你必须使用Stack 小部件。 Stack 有一个 children 属性,它只是一堆堆叠在一起的小部件。

    所以你有:

    堆栈

    • 图片
    • 渐变叠加

    AFAIK 无法使用 ShaderMask 来满足您的需求。

    【讨论】:

    • 我实际上是用ContainerBoxDecorationLinearGradient 制作的,我不知道Flutter 中有任何GradientOverlay 类。但我正在尝试使用ShaderMask,因为有人建议我这样做。
    • 是的,这就是我的意思 -> Image = BoxDecoration, GradientOverlay = LinearGradient.很高兴它有效!
    猜你喜欢
    • 1970-01-01
    • 2019-12-04
    • 2021-10-17
    • 1970-01-01
    • 2018-05-23
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多