buildAnimation method
      
void
buildAnimation({ 
    
- required Duration delay,
 - required bool animate,
 - required bool manualTrigger,
 - required bool infinite,
 - Function? onFinish,
 - dynamic controllerCallback(
- AnimationController controller
 
 
inherited
    Builds and controls the animation based on the provided parameters.
This method handles:
- Delayed animation start
 - Infinite animation loops
 - Animation reversal
 - Manual animation control
 
Parameters:
delay: Duration to wait before starting the animationanimate: Whether the animation should start automaticallymanualTrigger: Whether animation requires manual triggeringinfinite: Whether animation should loop infinitelyonFinish: Callback function when animation completescontrollerCallback: Callback to access the animation controller
Implementation
void buildAnimation({
  required Duration delay,
  required bool animate,
  required bool manualTrigger,
  required bool infinite,
  Function? onFinish,
  Function(AnimationController controller)? controllerCallback,
}) {
  /// Launch the animation ASAP or wait until needed
  print("animate: $animate");
  if (animate && !manualTrigger) {
    // controller.value = 0;
    Future.delayed(delay, () {
      if (disposed) return;
      if (infinite) {
        controller.repeat();
        return;
      }
      (animate) ? controller.forward() : controller.reverse();
    });
  }
  /// If the animation already happen, we can animate it back
  if (!animate) {
    if (disposed) return;
    if (infinite) {
      controller.stop();
      return;
    }
    // If the animation is finished, we need to reset the animation to the original state
    // after the animation is finished just for the following classes:
    if (resetAnimationClasses.contains(this.runtimeType) && !isFirstTime) {
      controller.value = 0;
      return;
    }
    controller.animateBack(0);
    isFirstTime = false;
  }
}