configAnimation method
void
configAnimation({
- required Duration delay,
- required bool animate,
- required bool manualTrigger,
- required bool infinite,
- Duration loopDelay = Duration.zero,
- AnimateDoFinishCallback? onFinish,
- AnimateDoLoopCallback? onLoop,
- AnimateDoControllerCallback? controllerCallback,
inherited
Wires up status listeners and triggers the animation, unless
manualTrigger is true. Should be called once from initState.
Implementation
void configAnimation({
required Duration delay,
required bool animate,
required bool manualTrigger,
required bool infinite,
Duration loopDelay = Duration.zero,
AnimateDoFinishCallback? onFinish,
AnimateDoLoopCallback? onLoop,
AnimateDoControllerCallback? controllerCallback,
}) {
final bool hasLoopDelay = infinite && loopDelay > Duration.zero;
if (onFinish != null || hasLoopDelay) {
controller.addStatusListener((AnimationStatus status) {
if (status == AnimationStatus.completed) {
onFinish?.call(AnimateDoDirection.forward);
if (hasLoopDelay) {
_loopTimerActive = true;
onLoop?.call();
_loopDelayTimer?.cancel();
_loopDelayTimer = Timer(loopDelay, () {
_loopTimerActive = false;
if (disposed) return;
controller.forward(from: 0);
});
}
} else if (status == AnimationStatus.dismissed) {
onFinish?.call(AnimateDoDirection.backward);
}
});
}
if (controllerCallback != null) {
controllerCallback(controller);
}
if (!manualTrigger && animate) {
_scheduleStart(delay: delay, infinite: infinite, loopDelay: loopDelay);
}
}