getAnimationSequence method
Implementation
MultiAnimationSequence getAnimationSequence() {
Duration singleDuration =
Duration(milliseconds: (duration.inMilliseconds / repeats / 2).round());
var sequence = AnimationSequence<SmoothMatrix4>();
for (int i = 0; i < repeats; i++) {
if (i == 0) {
sequence.add(
value: SmoothMatrix4()
..translate(translation)
..rotateZ(angle),
duration: Duration.zero,
delay: delay);
} else {
sequence.add(
value: SmoothMatrix4()
..translate(translation..scale(i / repeats))
..rotateZ(angle - i / repeats * angle),
duration: singleDuration,
curve: curve);
}
sequence.add(
value: SmoothMatrix4()
..translate(-translation
..scale(i / repeats))
..rotateZ(-(angle - i / repeats * angle)),
duration: singleDuration,
curve: curve);
}
sequence.add(
value: SmoothMatrix4(), duration: singleDuration, curve: curve);
return MultiAnimationSequence(control: control, sequences: {
AnimationProperty.transformAlignment: AnimationSequence<Alignment>()
..add(value: alignment, duration: Duration.zero),
AnimationProperty.transform: sequence,
});
}