我看了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。
实际上,我只希望rightCircleShadow
受blur
的影响。
如何仅在“本地”堆栈中选择性模糊小部件?而不是父堆栈?