如何在Flutter中有选择地模糊子堆栈中的小部件?

时间:2018-11-21 00:56:19

标签: stack flutter blur

我看了Flutter Issues,这就是我要去的东西:https://github.com/flutter/flutter/issues/13489

我有2个圆形小部件。它们排列成一个堆栈,并像维恩图一样放置,从而它们彼此部分重叠:

final vennDiagram = Stack(
    children: [
        leftCircle,
        rightCircle,
    ],
);

我想给它们添加一个漂亮的模糊“阴影”,因此我制作了它们的副本,然后将该副本放在另一个堆栈中,然后应用模糊(请参见this)。现在我有:

Stack(
    children: [
        vennDiagramShadow, // essentially an offset copy of `vennDiagram`
        blur, // BackdropFilter
        vennDiagram,
    ],
)

这看起来很棒-我的Venn图具有清晰的边缘,并且背景中有模糊的“阴影”。

但是,现在让我说,我希望每个小部件都应对自己的“模糊阴影”效果负责-例如我希望第一个圆圈的阴影更模糊(例如,用户点击维恩图的一侧)。我现在重构为:

final vennDiagram = Stack(
    children: [
        Stack(children: [leftCircleShadow, extraBlur, leftCircle]),
        Stack(children: [rightCircleShadow, blur, rightCircle]),
    ],
);

这会导致blur使rightCircle下方的所有内容变得模糊,因为在堆栈中,blur。覆盖leftCircle。 实际上,我只希望rightCircleShadowblur的影响。

如何仅在“本地”堆栈中选择性模糊小部件?而不是父堆栈?

0 个答案:

没有答案