仅在特定值上通知动画侦听器
Only Notify Animation listeners on Specific values
我有一个问题,一个 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);
}
在这种情况下,只有当 animation.value
达到下一个整数时,才应调用 update
。保存以前的数字然后只在达到新整数时才渲染对我来说不起作用,因为CustomPaint
takes a Listenable
,也就是animation
,画家会清除canvas 关于 Listenable
.
的过度更新
我也试过使用IntTween
。
animation = IntTween(begin: ...).animate(animationController);
然而,这个 animation
只会针对相同的整数值多次通知,这正是我之前的情况。
总结
我正在寻找一种方法,仅在 值更改(使用 IntTween
)或更好时仅针对特定值通知动画的听众。
Listenables 不实现过滤事件。并不是说这是不可能的,而是会导致重新实现 Stream
.
借此机会将您的 CustomPaint
转换为 RenderBox
。 CustomPaint
基本上是一个简化的 RenderBox
,因此后者允许您做同样的事情,但更适合您的用例。
您的最终实现将取决于您如何使用 CustomPaint
。
例如,如果您不使用 child
,您可能想要制作一个 LeafRenderObjectWidget
,而如果您使用,您将需要一个 SingleChildRenderObjectWidget
.
我有一个问题,一个 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);
}
在这种情况下,只有当 animation.value
达到下一个整数时,才应调用 update
。保存以前的数字然后只在达到新整数时才渲染对我来说不起作用,因为CustomPaint
takes a Listenable
,也就是animation
,画家会清除canvas 关于 Listenable
.
我也试过使用IntTween
。
animation = IntTween(begin: ...).animate(animationController);
然而,这个 animation
只会针对相同的整数值多次通知,这正是我之前的情况。
总结
我正在寻找一种方法,仅在 值更改(使用 IntTween
)或更好时仅针对特定值通知动画的听众。
Listenables 不实现过滤事件。并不是说这是不可能的,而是会导致重新实现 Stream
.
借此机会将您的 CustomPaint
转换为 RenderBox
。 CustomPaint
基本上是一个简化的 RenderBox
,因此后者允许您做同样的事情,但更适合您的用例。
您的最终实现将取决于您如何使用 CustomPaint
。
例如,如果您不使用 child
,您可能想要制作一个 LeafRenderObjectWidget
,而如果您使用,您将需要一个 SingleChildRenderObjectWidget
.