aloisdeniel / aloisdeniel/keyframes_tween

Interpolating between animations from previous value

未关闭
#3 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Dart
星标
19
派生
3
PR 合并指标
30 天内没有已合并 PR

描述

I'm trying to achieve a behavior similar to TweenAnimationBuilder such that the previous value of the tween is used to start/continue the animation when running it.

My use-case is quickly switching between days and interpolating between some values. However, on top of that there's a transition sequence that I would like to play when doing so.

When playing this animation fully from value `a` to value `b` everything works as expected:

```dart

KeyframesTween getLabelTween(
double previousValue,
double value,
) {

return KeyframesTween([
KeyframeProperty(
[
1.0.keyframe(0.0),
0.0.keyframe(10 / 60),
0.0.keyframe(15 / 60),
1.0.keyframe(45 / 60, VisibleCurves.functionalEntrance),
],
name: 'opacity',
),
KeyframeProperty(
[
0.0.keyframe(10 / 60),
6.0.keyframe(15 / 60),
0.0.keyframe(45 / 60, VisibleCurves.functionalEntrance),
],
name: 'offset',
),

KeyframeProperty(
[
previousValue.keyframe(0.0),
0.0.keyframe(15 / 60),
value.keyframe(1.0),
],
name: 'value',
),
]);
}
```

However, when switching from `a` to `b` and then quickly to `c` the animation will restart from 0 and if the transition was in the middle, it will look jarring.

```dart
@override
void didUpdateWidget(covariant AnimatedTextSwitcher oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.keyBuilder != widget.keyBuilder) {
switchDayAnimation(oldWidget.value);
}
}

void switchDayAnimation(String previousValue) {
_tween = getLabelTween(previousValue, widget.value);
_controller.forward(from: 0);
}
```

I'm trying to find a way to "memoize" the most recent animation state similarly how `TweenAnimationBuilder` achieves it. Do you see any possibility to combine that with keyframes_flutter?

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。