withAnimation<T> function

AnimationController withAnimation<T>({
  1. required TickerProvider vsync,
  2. required Tween<T> tween,
  3. required AnimationUpdateCallBack<T?> callBack,
  4. Duration duration = const Duration(seconds: 1),
  5. double initialValue = 0.0,
  6. Curve curve = Curves.linear,
  7. Animation? customAnimation,
})

To perform forward animation in a simpler way

Implementation

AnimationController withAnimation<T>(
    {required TickerProvider vsync,
    required Tween<T> tween,
    required AnimationUpdateCallBack<T?> callBack,
    Duration duration = const Duration(seconds: 1),
    double initialValue = 0.0,
    Curve curve = Curves.linear,
    Animation? customAnimation}) {
  final AnimationController controller = AnimationController(
    vsync: vsync,
    duration: duration,
    value: initialValue,
  );
  final curveAnimation = CurvedAnimation(parent: controller, curve: curve);
  final Animation animation = customAnimation ?? tween.animate(curveAnimation);
  animation.addListener(() {
    callBack.call(animation.value, controller.value);
  });

  controller.forward().whenCompleteOrCancel(() {
    controller.dispose();
  });

  return controller;
}