From 12bcf122a6f39923d5d819c989eb3fc470e31e69 Mon Sep 17 00:00:00 2001 From: paulopicasso Date: Mon, 7 Oct 2024 21:54:38 +0200 Subject: [PATCH] add customization options to fading_circle --- lib/src/fading_circle.dart | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/src/fading_circle.dart b/lib/src/fading_circle.dart index 2441b85..c17375a 100644 --- a/lib/src/fading_circle.dart +++ b/lib/src/fading_circle.dart @@ -6,6 +6,8 @@ class SpinKitFadingCircle extends StatefulWidget { Key? key, this.color, this.size = 50.0, + this.itemSize, + this.itemCount, this.itemBuilder, this.duration = const Duration(milliseconds: 1200), this.controller, @@ -17,6 +19,8 @@ class SpinKitFadingCircle extends StatefulWidget { final Color? color; final double size; + final double? itemSize; + final int? itemCount; final IndexedWidgetBuilder? itemBuilder; final Duration duration; final AnimationController? controller; @@ -26,8 +30,6 @@ class SpinKitFadingCircle extends StatefulWidget { } class _SpinKitFadingCircleState extends State with SingleTickerProviderStateMixin { - static const _itemCount = 12; - late AnimationController _controller; @override @@ -47,27 +49,30 @@ class _SpinKitFadingCircleState extends State with SingleTi @override Widget build(BuildContext context) { + final itemSize = widget.itemSize ?? widget.size * 0.15; + final itemCount = widget.itemCount ?? 12; + return Center( child: SizedBox.fromSize( size: Size.square(widget.size), child: Stack( - children: List.generate(_itemCount, (i) { + children: List.generate(itemCount, (i) { final position = widget.size * .5; return Positioned.fill( left: position, top: position, child: Transform( - transform: Matrix4.rotationZ(30.0 * i * 0.0174533), + transform: Matrix4.rotationZ((360 / itemCount) * i * 0.0174533), child: Align( alignment: Alignment.center, child: FadeTransition( opacity: DelayTween( begin: 0.0, end: 1.0, - delay: i / _itemCount, + delay: i / itemCount, ).animate(_controller), child: SizedBox.fromSize( - size: Size.square(widget.size * 0.15), + size: Size.square(itemSize), child: _itemBuilder(i), ), ),