Skip to content

Commit 082ce2f

Browse files
committed
✨ Refactor SpinnerWidget to utilize a switch expression for cleaner widget construction, improving readability and maintainability of spinner styles.
1 parent da36fc3 commit 082ce2f

1 file changed

Lines changed: 74 additions & 140 deletions

File tree

lib/src/spinner.dart

Lines changed: 74 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -26,241 +26,175 @@ class SpinnerWidget extends StatelessWidget {
2626
@override
2727
Widget build(BuildContext context) {
2828
final effectiveColor = color ?? Colors.blue;
29-
late final Widget spinner;
30-
switch (style) {
31-
case SpinStyle.material:
32-
spinner = CircularProgressIndicator(
29+
30+
final Widget spinner = switch (style) {
31+
SpinStyle.material => CircularProgressIndicator(
3332
strokeWidth: width,
34-
valueColor: AlwaysStoppedAnimation<Color>(effectiveColor),
35-
);
36-
break;
37-
case SpinStyle.cupertino:
38-
spinner = CupertinoActivityIndicator(radius: size * 0.24);
39-
break;
40-
case SpinStyle.chasingDots:
41-
spinner = SpinKitChasingDots(
33+
color: effectiveColor,
34+
),
35+
SpinStyle.cupertino => CupertinoActivityIndicator(radius: size * 0.24),
36+
SpinStyle.chasingDots => SpinKitChasingDots(
4237
color: effectiveColor,
4338
size: size,
4439
duration: animationDuration,
45-
);
46-
break;
47-
case SpinStyle.circle:
48-
spinner = SpinKitCircle(
40+
),
41+
SpinStyle.circle => SpinKitCircle(
4942
color: effectiveColor,
5043
size: size,
5144
duration: animationDuration,
52-
);
53-
break;
54-
case SpinStyle.cubeGrid:
55-
spinner = SpinKitCubeGrid(
45+
),
46+
SpinStyle.cubeGrid => SpinKitCubeGrid(
5647
color: effectiveColor,
5748
size: size,
5849
duration: animationDuration,
59-
);
60-
break;
61-
case SpinStyle.dancingSquare:
62-
spinner = SpinKitDancingSquare(
50+
),
51+
SpinStyle.dancingSquare => SpinKitDancingSquare(
6352
color: effectiveColor,
6453
size: size,
6554
duration: animationDuration,
66-
);
67-
break;
68-
case SpinStyle.doubleBounce:
69-
spinner = SpinKitDoubleBounce(
55+
),
56+
SpinStyle.doubleBounce => SpinKitDoubleBounce(
7057
color: effectiveColor,
7158
size: size,
7259
duration: animationDuration,
73-
);
74-
break;
75-
case SpinStyle.dualRing:
76-
spinner = SpinKitDualRing(
60+
),
61+
SpinStyle.dualRing => SpinKitDualRing(
7762
color: effectiveColor,
7863
lineWidth: width,
79-
duration: animationDuration,
8064
size: size,
81-
);
82-
break;
83-
case SpinStyle.fadingCircle:
84-
spinner = SpinKitFadingCircle(
65+
duration: animationDuration,
66+
),
67+
SpinStyle.fadingCircle => SpinKitFadingCircle(
8568
color: effectiveColor,
8669
size: size,
8770
duration: animationDuration,
88-
);
89-
break;
90-
case SpinStyle.fadingCube:
91-
spinner = SpinKitFadingCube(
71+
),
72+
SpinStyle.fadingCube => SpinKitFadingCube(
9273
color: effectiveColor,
93-
duration: animationDuration,
9474
size: size,
95-
);
96-
break;
97-
case SpinStyle.fadingFour:
98-
spinner = SpinKitFadingFour(
99-
color: effectiveColor,
10075
duration: animationDuration,
101-
size: size,
102-
);
103-
break;
104-
case SpinStyle.fadingGrid:
105-
spinner = SpinKitFadingGrid(
76+
),
77+
SpinStyle.fadingFour => SpinKitFadingFour(
10678
color: effectiveColor,
107-
duration: animationDuration,
10879
size: size,
109-
);
110-
break;
111-
case SpinStyle.foldingCube:
112-
spinner = SpinKitFoldingCube(
80+
duration: animationDuration,
81+
),
82+
SpinStyle.fadingGrid => SpinKitFadingGrid(
11383
color: effectiveColor,
84+
size: size,
11485
duration: animationDuration,
86+
),
87+
SpinStyle.foldingCube => SpinKitFoldingCube(
88+
color: effectiveColor,
11589
size: size,
116-
);
117-
break;
118-
case SpinStyle.hourGlass:
119-
spinner = SpinKitHourGlass(
90+
duration: animationDuration,
91+
),
92+
SpinStyle.hourGlass => SpinKitHourGlass(
12093
color: effectiveColor,
12194
size: size,
12295
duration: animationDuration,
123-
);
124-
break;
125-
case SpinStyle.pianoWave:
126-
spinner = SpinKitPianoWave(
96+
),
97+
SpinStyle.pianoWave => SpinKitPianoWave(
12798
color: effectiveColor,
12899
size: size,
129100
duration: animationDuration,
130-
);
131-
break;
132-
case SpinStyle.pouringHourGlass:
133-
spinner = SpinKitPouringHourGlass(
101+
),
102+
SpinStyle.pouringHourGlass => SpinKitPouringHourGlass(
134103
color: effectiveColor,
135104
size: size,
136105
duration: animationDuration,
137-
);
138-
break;
139-
case SpinStyle.pulse:
140-
spinner = SpinKitPulse(
106+
),
107+
SpinStyle.pulse => SpinKitPulse(
141108
color: effectiveColor,
142109
size: size,
143110
duration: animationDuration,
144-
);
145-
break;
146-
case SpinStyle.pulsingGrid:
147-
spinner = SpinKitPulsingGrid(
111+
),
112+
SpinStyle.pulsingGrid => SpinKitPulsingGrid(
148113
color: effectiveColor,
149114
size: size,
150115
duration: animationDuration,
151-
);
152-
break;
153-
case SpinStyle.pumpingHeart:
154-
spinner = SpinKitPumpingHeart(
116+
),
117+
SpinStyle.pumpingHeart => SpinKitPumpingHeart(
155118
color: effectiveColor,
156119
size: size,
157120
duration: animationDuration,
158-
);
159-
break;
160-
case SpinStyle.ring:
161-
spinner = SpinKitRing(
121+
),
122+
SpinStyle.ring => SpinKitRing(
162123
color: effectiveColor,
163124
size: size,
164125
lineWidth: width,
165126
duration: animationDuration,
166-
);
167-
break;
168-
case SpinStyle.ripple:
169-
spinner = SpinKitRipple(
127+
),
128+
SpinStyle.ripple => SpinKitRipple(
170129
color: effectiveColor,
171130
borderWidth: width,
172131
size: size,
173132
duration: animationDuration,
174-
);
175-
break;
176-
case SpinStyle.rotatingCircle:
177-
spinner = SpinKitRotatingCircle(
133+
),
134+
SpinStyle.rotatingCircle => SpinKitRotatingCircle(
178135
color: effectiveColor,
179136
size: size,
180137
duration: animationDuration,
181-
);
182-
break;
183-
case SpinStyle.rotatingPlain:
184-
spinner = SpinKitRotatingPlain(
138+
),
139+
SpinStyle.rotatingPlain => SpinKitRotatingPlain(
185140
color: effectiveColor,
186141
size: size,
187142
duration: animationDuration,
188-
);
189-
break;
190-
case SpinStyle.spinningCircle:
191-
spinner = SpinKitSpinningCircle(
143+
),
144+
SpinStyle.spinningCircle => SpinKitSpinningCircle(
192145
color: effectiveColor,
193146
size: size,
194147
duration: animationDuration,
195-
);
196-
break;
197-
case SpinStyle.spinningLines:
198-
spinner = SpinKitSpinningLines(
148+
),
149+
SpinStyle.spinningLines => SpinKitSpinningLines(
199150
color: effectiveColor,
200151
size: size,
201152
duration: animationDuration,
202-
);
203-
break;
204-
case SpinStyle.squareCircle:
205-
spinner = SpinKitSquareCircle(
153+
),
154+
SpinStyle.squareCircle => SpinKitSquareCircle(
206155
color: effectiveColor,
207156
size: size,
208157
duration: animationDuration,
209-
);
210-
break;
211-
case SpinStyle.threeBounce:
212-
spinner = SpinKitThreeBounce(
158+
),
159+
SpinStyle.threeBounce => SpinKitThreeBounce(
213160
color: effectiveColor,
214161
size: size * 0.5,
215162
duration: animationDuration,
216-
);
217-
break;
218-
case SpinStyle.threeInOut:
219-
spinner = SpinKitThreeInOut(
163+
),
164+
SpinStyle.threeInOut => SpinKitThreeInOut(
220165
color: effectiveColor,
221166
size: size * 0.5,
222167
duration: animationDuration,
223-
);
224-
break;
225-
case SpinStyle.wanderingCubes:
226-
spinner = SpinKitWanderingCubes(
168+
),
169+
SpinStyle.wanderingCubes => SpinKitWanderingCubes(
227170
color: effectiveColor,
228171
size: size,
229172
duration: animationDuration,
230-
);
231-
break;
232-
case SpinStyle.waveStart:
233-
spinner = SpinKitWave(
173+
),
174+
SpinStyle.waveStart => SpinKitWave(
234175
color: effectiveColor,
235176
size: size,
236177
type: SpinKitWaveType.start,
237178
duration: animationDuration,
238-
);
239-
break;
240-
case SpinStyle.waveCenter:
241-
spinner = SpinKitWave(
179+
),
180+
SpinStyle.waveCenter => SpinKitWave(
242181
color: effectiveColor,
243182
size: size,
244183
type: SpinKitWaveType.center,
245184
duration: animationDuration,
246-
);
247-
break;
248-
case SpinStyle.waveEnd:
249-
spinner = SpinKitWave(
185+
),
186+
SpinStyle.waveEnd => SpinKitWave(
250187
color: effectiveColor,
251188
size: size,
252189
type: SpinKitWaveType.end,
253190
duration: animationDuration,
254-
);
255-
break;
256-
case SpinStyle.waveSpinner:
257-
spinner = SpinKitWave(
191+
),
192+
SpinStyle.waveSpinner => SpinKitWave(
258193
color: effectiveColor,
259194
size: size,
260195
duration: animationDuration,
261-
);
262-
break;
263-
}
196+
),
197+
};
264198

265199
return SizedBox.square(
266200
dimension: size,

0 commit comments

Comments
 (0)