我想将 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?"),
),
),
],
...