getAnimations method
Generates per-character stretch and vertical offset with noise phase.
Implementation
@override
List<CharacterAnimation> getAnimations(double progress, int charCount) {
if (charCount == 0) return [];
final curved = applyCurve(progress);
return List.generate(charCount, (index) {
final phase = noise(index) * 2 * pi;
final returnT = sin(curved * pi);
final angle = curved * 2 * pi * frequency + phase;
final stretchX = 1.0 + sin(angle) * amplitude * returnT;
final stretchY = 1.0 - sin(angle) * amplitude * 0.5 * returnT;
final dy = sin(angle * 0.7) * waveHeight * returnT;
return CharacterAnimation(
scaleX: stretchX,
scaleY: stretchY,
translation: Offset(0, dy),
);
});
}