Flutter在堆栈中另一个小部件下混合/掩盖多个小部件

问题描述

我正在尝试在堆栈中的特定窗口小部件下混合多个窗口小部件。例如,在此堆栈中...

        Stack(
            children: [
              Container(
                decoration: Boxdecoration(
                    image: decorationImage(
                        image: Assetimage('images/desert.jpg'))),),Center(
                  child: Text('Hello,World',style: TextStyle(fontSize: 40,color: Colors.white)))
            ],

...颜色过滤器将以文本的形式应用于容器。

上面的代码产生了这个:

Code result

我正在尝试达到以下目标:

enter image description here

在这种情况下,“文本”会根据特定的BlendMode(例如,差异,排除,乘法,除法)更改以下小部件的颜色。

一个堆栈溢出用户询问question(未回答),这与我正在寻找的两个小部件相互融合的位置相似。

是否可以使用Flutter(使用CustomPainter或其他方式)获得类似的效果?大多数更改其颜色和属性的窗口小部件只会影响其子级(ColorFiltered,ShaderMask),而我能想到的唯一会影响堆栈中其下的窗口小部件的是BackdropFilter。

它可以在任何小部件之间工作吗?

解决方法

我们必须实现类似的东西。在渐变上具有ColorBurn混合蒙版的图像。无论我们在网上尝试了多少建议的解决方案,我们都无法获得与AdobeXD相同的结果。因此,最后我们不得不使用adobe_xd插件,看看它如何将设计转换为Flutter。事实证明,它使用的BlendMask不在Flutter中,但我们可以找到它here,并获得了预期的结果。