我遇到了一个问题,即Animation
仅应在整数上更新,而会触发。
update() { // gets called for 0, 0.01, 0.02, .., 1.0, .. but should only get called on 0, 1, ...
final integer = animation.value.toInt();
renderHeavyAnimation(integer);
}
在这种情况下,update
仅在animation.value
达到下一个整数时才被调用。保存先前的数字,然后仅渲染一次达到新整数的操作对我来说不起作用,因为Series.update
(即animation
,画家将清除画布上的Listenable
的过分更新。
我还尝试使用CustomPaint
takes a Listenable
。
animation = IntTween(begin: ...).animate(animationController);
但是,此animation
只会多次通知相同的整数值,而这正是我以前的经验。
我正在寻找一种仅在 值更改(使用IntTween
或仅针对特定值更改时才通知动画的听众的方法。
答案 0 :(得分:0)
监听项不实现过滤事件。并非不可能,但这会导致重新实现Stream
。
以此为契机将CustomPaint
转换为RenderBox
。 CustomPaint
基本上是简化的RenderBox
,因此后者可以使您做相同的事情,但针对用例进行了优化。
您的最终实现将取决于您如何使用CustomPaint
。
例如,如果您不使用child
,则可能要制作LeafRenderObjectWidget
,而如果使用SingleChildRenderObjectWidget
。