getAnimations method

  1. @override
List<CharacterAnimation> getAnimations(
  1. double progress,
  2. int charCount
)
override

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),
    );
  });
}