仅在特定值上通知动画侦听器

时间:2019-02-16 08:42:56

标签: dart flutter flutter-animation

我遇到了一个问题,即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或仅针对特定值更改时才通知动画的听众的方法。

1 个答案:

答案 0 :(得分:0)

监听项不实现过滤事件。并非不可能,但这会导致重新实现Stream

以此为契机将CustomPaint转换为RenderBoxCustomPaint基本上是简化的RenderBox,因此后者可以使您做相同的事情,但针对用例进行了优化。


您的最终实现将取决于您如何使用CustomPaint

例如,如果您不使用child,则可能要制作LeafRenderObjectWidget,而如果使用SingleChildRenderObjectWidget