How to add some delay between AnimationController.repeat() in Flutter
4,489
Thanks to @pskink Now it's working as I expected. All you have to do is repeat the controller yourself instead of trying to add delay to controller.repeat()
if(status == AnimationStatus.completed){
Future.delayed(Duration(milliseconds: 5000),(){
_controller.forward(from: 0.0);
});
}
Author by
SUDESH KUMARA
Updated on December 24, 2022Comments
-
SUDESH KUMARA over 1 year
I need to add some delay between each iteration of animation gets call to repeat. Something like the following image.
I tried to do it by passing value to the period parameter of the repeat method but it was not what I expected.
_controller = AnimationController(vsync: this, duration: widget.period) ..addStatusListener((AnimationStatus status) { if (status != AnimationStatus.completed) { return; } _count++; if (widget.loop <= 0) { //_controller.repeat(period: Duration(microseconds: 5000)); _controller.repeat(); } else if (_count < widget.loop) { _controller.forward(from: 0.0); } });
I've also tried to add Tween with the animation. That didn't help either. Can you help me clarify where I went wrong?
AnimatedBuilder( animation: Tween<double>(begin: 0.0, end: 1.0).animate( CurvedAnimation( parent: _controller, curve: Interval(0.5, 1.0) ), ), child: widget.child, builder: (BuildContext context, Widget child) => _Shiner( child: child, direction: widget.direction, gradient: widget.gradient, percent: _controller.value, enabled: widget.enabled, ), );