delayedAnimation function

Animation<double> delayedAnimation(
  1. Animation<double> animation, {
  2. required Duration duration,
  3. required Duration within,
})

returns an animation with duration broader, but doesn't raise from 0 until broader - duration, meaning that it will appear as if it runs for duration after a delay. We do it this way instead of specifying {delay, duration} because flutter requires the duration to have been decided generally before you receive an animation, so this ends up being more succinct/parametizable.

Implementation

Animation<double> delayedAnimation(Animation<double> animation,
    {required Duration duration, required Duration within}) {
  final curve = Interval(
      (within.inMilliseconds - duration.inMilliseconds) / within.inMilliseconds,
      1.0);
  return CurvedAnimation(parent: animation, curve: curve);
}