0

我想将 ImageFilter 应用于 ListView 以便所有孩子都受到影响并且所有孩子都会相互影响混合颜色。(这就是为什么将过滤器应用于子项而不是列表视图不起作用的原因)。

没关系。但是现在我需要在这些先前绘制的小部件之上放置另一个小部件(想想其颜色相互渗透的容器) - 不受祖先 imageFiltered 图像过滤器的影响。

我想要一个“拦截器”小部件,以便以前的过滤器仅适用于树中的这一点 - 没有进一步的下方。那可能吗?(顺便说一句,ListViews 子项周围的 BackdropFilter 也不起作用,尽管它可以在上游使用 ClipRect 停止,但它不会让子项“交互”/让过滤器混合子项。)

在阅读了很多关于画布和 CustomPaints 的内容后,我认为我需要按照这里的建议使用 RenderObject但我无法让它工作..我似乎仍然难以掌握画布和绘画的概念:可以过滤父小部件甚至被“停止”?

作为一种解决方法,我想象第二个同步且非交互式的 ListView 具有所需的效果作为主 ListView 的背景,其中包含所有不应被操纵的东西......

在写一个想法时想到:也许定制一个列表视图构建器来接受第二个 unaffectedChild?

非常感谢帮助。

tl;博士


MultipleCustomFilters( // <- ImageFiltered(filter: filter1, child: ImageFiltered(filter2, child: child
  child: ListView.builder(
    itemCount: 5,
    itemBuilder: (BuildContext context, int index) {
      return Center(
        child: Stack(
          children: [
            Container(
              width: 100,
              height: 100,
              color: Colors.blue,
              child: Text("I want to receive all filters!"),
            ),
            FilterBlocker( // <- How to build this?
              child: Container(
                width: 40,
                height: 40,
                color: Colors.indigo,
                child: Text("I don't want to receive any previous paint manipulations! How?"),
              ),
            ),
          ],
        ...

4

0 回答 0