0

编辑在进一步阅读后,我在 layer.dart 源文件中遇到了这个:

大多数图层的属性可以发生变化,并且图层可以移动到不同的父级。

所以,我更新了这个问题,我希望这可以进一步缩小范围(原文如下):

是否可以将子窗口小部件的渲染层向上移动,以便早期锚定窗口小部件的渲染层成为其父窗口?如果是这样,一个例子会很棒。用例见下文。

原始问题:

也许我在某个地方完全错了,有一种更简单的方法可以存档,但我被卡住了。试图摆脱我的盒子。这是重新表述这个问题的尝试。

我想要存档的内容:我希望能够在我的树中某处说:blur everything from here然后在树下更远的某个地方再说一遍from now on no more blurring, paint as you are

伪树:

Stack:
  chidren: [
    [...],
    MyMagicBlurrer:     <- blur from here on
     children:
       WhateverWidget,  <- blurred
       [...]
       ListView.builder {
         return Center: Stack[
                        [...],
                        Transform:
                          child: Container            <- still blurred
                            child: MyMagicUnBlurrer   <- Stops the blur!
                              children: [...],        <- no more blurred.
                        [...],

问题主要是'ListView'(也可以SliverChildBuilderDelegate设置addRepaintBoundaries为false):为了将listviews子项模糊在一起,ImageFilter需要在树的上方(对吗?)。这就是为什么BackDropFilter对孩子不起作用的原因。

我很确定我需要访问RenderObjects. 我想出了如何通过canvas.saveLayerand来绘制我的东西.paintChild()。我没有弄清楚:是否可以说:(all my renderobjects childs should now paint to Layer1模糊层)然后,通过另一个访问渲染对象(MyMagicUnBlurrer)all my children from now on shall paint to layer2(一个新的 dstOver 复合层)?!

疯狂猜测:我可以键入ImageFilter.blur()Widget 并由树下的孩子引用它的“Paint()”层吗?

可能我的想法完全错了..任何建议都非常感谢!

@creativecreatoror 可能不适合你?:)

4

0 回答 0