Skip to content

Commit 9bf4b9a

Browse files
authored
Merge pull request #68 from splashbyte/67-jerky-animation-during-fast-sequential-switching
#67: fixes jerky animation
2 parents de4341c + e14203e commit 9bf4b9a

11 files changed

Lines changed: 119 additions & 143 deletions

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.8.6 (2026-01-09)
2+
3+
- fixes [#67](https://github.com/splashbyte/animated_toggle_switch/issues/67)
4+
15
## 0.8.5 (2025-04-28)
26

37
- adds `padding` to `AnimatedToggleSwitch` ([#65](https://github.com/splashbyte/animated_toggle_switch/issues/65))

example/lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class MyApp extends StatelessWidget {
2626
}
2727

2828
class MyHomePage extends StatefulWidget {
29-
const MyHomePage({Key? key, required this.title}) : super(key: key);
29+
const MyHomePage({super.key, required this.title});
3030

3131
final String title;
3232

example/pubspec.lock

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ packages:
77
path: ".."
88
relative: true
99
source: path
10-
version: "0.8.4"
10+
version: "0.8.6"
1111
async:
1212
dependency: transitive
1313
description:
1414
name: async
15-
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
15+
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
1616
url: "https://pub.dev"
1717
source: hosted
18-
version: "2.12.0"
18+
version: "2.13.0"
1919
boolean_selector:
2020
dependency: transitive
2121
description:
@@ -52,10 +52,10 @@ packages:
5252
dependency: transitive
5353
description:
5454
name: fake_async
55-
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
55+
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
5656
url: "https://pub.dev"
5757
source: hosted
58-
version: "1.3.2"
58+
version: "1.3.3"
5959
flutter:
6060
dependency: "direct main"
6161
description: flutter
@@ -75,26 +75,26 @@ packages:
7575
dependency: transitive
7676
description:
7777
name: leak_tracker
78-
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
78+
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
7979
url: "https://pub.dev"
8080
source: hosted
81-
version: "10.0.8"
81+
version: "11.0.2"
8282
leak_tracker_flutter_testing:
8383
dependency: transitive
8484
description:
8585
name: leak_tracker_flutter_testing
86-
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
86+
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
8787
url: "https://pub.dev"
8888
source: hosted
89-
version: "3.0.9"
89+
version: "3.0.10"
9090
leak_tracker_testing:
9191
dependency: transitive
9292
description:
9393
name: leak_tracker_testing
94-
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
94+
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
9595
url: "https://pub.dev"
9696
source: hosted
97-
version: "3.0.1"
97+
version: "3.0.2"
9898
matcher:
9999
dependency: transitive
100100
description:
@@ -184,50 +184,50 @@ packages:
184184
dependency: transitive
185185
description:
186186
name: test_api
187-
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
187+
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
188188
url: "https://pub.dev"
189189
source: hosted
190-
version: "0.7.4"
190+
version: "0.7.6"
191191
url_launcher:
192192
dependency: "direct main"
193193
description:
194194
name: url_launcher
195-
sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3"
195+
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
196196
url: "https://pub.dev"
197197
source: hosted
198-
version: "6.3.0"
198+
version: "6.3.2"
199199
url_launcher_android:
200200
dependency: transitive
201201
description:
202202
name: url_launcher_android
203-
sha256: "94d8ad05f44c6d4e2ffe5567ab4d741b82d62e3c8e288cc1fcea45965edf47c9"
203+
sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611"
204204
url: "https://pub.dev"
205205
source: hosted
206-
version: "6.3.8"
206+
version: "6.3.28"
207207
url_launcher_ios:
208208
dependency: transitive
209209
description:
210210
name: url_launcher_ios
211-
sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e
211+
sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad
212212
url: "https://pub.dev"
213213
source: hosted
214-
version: "6.3.1"
214+
version: "6.3.6"
215215
url_launcher_linux:
216216
dependency: transitive
217217
description:
218218
name: url_launcher_linux
219-
sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af
219+
sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a
220220
url: "https://pub.dev"
221221
source: hosted
222-
version: "3.2.0"
222+
version: "3.2.2"
223223
url_launcher_macos:
224224
dependency: transitive
225225
description:
226226
name: url_launcher_macos
227-
sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de"
227+
sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18"
228228
url: "https://pub.dev"
229229
source: hosted
230-
version: "3.2.0"
230+
version: "3.2.5"
231231
url_launcher_platform_interface:
232232
dependency: transitive
233233
description:
@@ -240,42 +240,42 @@ packages:
240240
dependency: transitive
241241
description:
242242
name: url_launcher_web
243-
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
243+
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
244244
url: "https://pub.dev"
245245
source: hosted
246-
version: "2.3.3"
246+
version: "2.4.1"
247247
url_launcher_windows:
248248
dependency: transitive
249249
description:
250250
name: url_launcher_windows
251-
sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185"
251+
sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f"
252252
url: "https://pub.dev"
253253
source: hosted
254-
version: "3.1.2"
254+
version: "3.1.5"
255255
vector_math:
256256
dependency: transitive
257257
description:
258258
name: vector_math
259-
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
259+
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
260260
url: "https://pub.dev"
261261
source: hosted
262-
version: "2.1.4"
262+
version: "2.2.0"
263263
vm_service:
264264
dependency: transitive
265265
description:
266266
name: vm_service
267-
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
267+
sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
268268
url: "https://pub.dev"
269269
source: hosted
270-
version: "14.3.1"
270+
version: "15.0.2"
271271
web:
272272
dependency: transitive
273273
description:
274274
name: web
275-
sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062
275+
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
276276
url: "https://pub.dev"
277277
source: hosted
278-
version: "1.0.0"
278+
version: "1.1.1"
279279
sdks:
280-
dart: ">=3.7.0-0 <4.0.0"
281-
flutter: ">=3.22.0"
280+
dart: ">=3.9.0 <4.0.0"
281+
flutter: ">=3.35.0"

lib/src/widgets/animated_toggle_switch.dart

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ class AnimatedToggleSwitch<T extends Object?>
428428
required this.values,
429429
SimpleIconBuilder<T>? iconBuilder,
430430
AnimatedIconBuilder<T>? customIconBuilder,
431-
List<Widget>? iconList,
431+
super.iconList,
432432
this.animationDuration = const Duration(milliseconds: 500),
433433
this.animationCurve = Curves.easeInOutCirc,
434434
this.indicatorSize = const Size.fromWidth(48.0),
@@ -481,7 +481,6 @@ class AnimatedToggleSwitch<T extends Object?>
481481
styleBuilder: styleBuilder,
482482
customStyleBuilder: customStyleBuilder,
483483
styleList: styleList,
484-
iconList: iconList,
485484
);
486485

487486
/// Special version of [AnimatedToggleSwitch.size].
@@ -502,7 +501,7 @@ class AnimatedToggleSwitch<T extends Object?>
502501
Size indicatorSize = const Size.square(1.0),
503502
SimpleIconBuilder<T>? iconBuilder,
504503
AnimatedIconBuilder<T>? customIconBuilder,
505-
List<Widget>? iconList,
504+
super.iconList,
506505
this.onChanged,
507506
this.borderWidth = 2.0,
508507
this.style = const ToggleStyle(),
@@ -553,7 +552,6 @@ class AnimatedToggleSwitch<T extends Object?>
553552
styleBuilder: styleBuilder,
554553
customStyleBuilder: customStyleBuilder,
555554
styleList: styleList,
556-
iconList: iconList,
557555
);
558556

559557
static AnimatedIconBuilder<T>? _iconSizeBuilder<T>(
@@ -599,7 +597,7 @@ class AnimatedToggleSwitch<T extends Object?>
599597
required this.values,
600598
SimpleRollingIconBuilder<T>? iconBuilder,
601599
RollingIconBuilder<T>? customIconBuilder,
602-
List<Widget>? iconList,
600+
super.iconList,
603601
this.animationDuration = const Duration(milliseconds: 500),
604602
this.animationCurve = Curves.easeInOutCirc,
605603
this.indicatorSize = const Size.fromWidth(46.0),
@@ -663,7 +661,6 @@ class AnimatedToggleSwitch<T extends Object?>
663661
styleBuilder: styleBuilder,
664662
customStyleBuilder: customStyleBuilder,
665663
styleList: styleList,
666-
iconList: iconList,
667664
);
668665

669666
/// Special version of [AnimatedToggleSwitch.rolling].
@@ -684,7 +681,7 @@ class AnimatedToggleSwitch<T extends Object?>
684681
required this.values,
685682
SimpleRollingIconBuilder<T>? iconBuilder,
686683
RollingIconBuilder<T>? customIconBuilder,
687-
List<Widget>? iconList,
684+
super.iconList,
688685
this.animationDuration = const Duration(milliseconds: 500),
689686
this.animationCurve = Curves.easeInOutCirc,
690687
Size indicatorSize = const Size.square(1.0),
@@ -749,7 +746,6 @@ class AnimatedToggleSwitch<T extends Object?>
749746
styleBuilder: styleBuilder,
750747
customStyleBuilder: customStyleBuilder,
751748
styleList: styleList,
752-
iconList: iconList,
753749
);
754750

755751
static CustomIndicatorBuilder<T> _rollingForegroundIndicatorIconBuilder<T>(
@@ -1334,7 +1330,7 @@ class AnimatedToggleSwitch<T extends Object?>
13341330
}
13351331

13361332
class _MyLoading extends StatelessWidget {
1337-
const _MyLoading({Key? key}) : super(key: key);
1333+
const _MyLoading();
13381334

13391335
@override
13401336
Widget build(BuildContext context) {

lib/src/widgets/custom_animated_toggle_switch.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ class CustomAnimatedToggleSwitch<T extends Object?> extends StatefulWidget {
196196
final bool _vertical;
197197

198198
const CustomAnimatedToggleSwitch({
199-
Key? key,
199+
super.key,
200200
required this.current,
201201
required this.values,
202202
required this.iconBuilder,
@@ -234,8 +234,7 @@ class CustomAnimatedToggleSwitch<T extends Object?> extends StatefulWidget {
234234
assert(foregroundIndicatorBuilder != null ||
235235
backgroundIndicatorBuilder != null),
236236
assert(separatorBuilder == null ||
237-
(spacing > 0 && iconArrangement == IconArrangement.row)),
238-
super(key: key);
237+
(spacing > 0 && iconArrangement == IconArrangement.row));
239238

240239
const CustomAnimatedToggleSwitch._({
241240
required this.current,
@@ -976,7 +975,7 @@ class _CustomAnimatedToggleSwitchState<T>
976975

977976
/// Cancels drag because of loading or inactivity
978977
void _cancelDrag() {
979-
_setAnimationInfo(_animationInfo.none());
978+
_setAnimationInfo(_animationInfo.none(current: _positionValue));
980979
_checkValuePosition();
981980
}
982981
}
@@ -1031,12 +1030,11 @@ class _WidgetPart extends StatelessWidget {
10311030
final Widget child;
10321031

10331032
const _WidgetPart({
1034-
Key? key,
10351033
this.width = double.infinity,
10361034
this.height = double.infinity,
10371035
required this.left,
10381036
required this.child,
1039-
}) : super(key: key);
1037+
});
10401038

10411039
@override
10421040
Widget build(BuildContext context) {

lib/src/widgets/hover_region.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ class _HoverRegion extends StatefulWidget {
66
final MouseCursor defaultCursor;
77

88
const _HoverRegion({
9-
Key? key,
109
required this.child,
1110
required this.cursorByOffset,
1211
this.defaultCursor = MouseCursor.defer,
13-
}) : super(key: key);
12+
});
1413

1514
@override
1615
State<_HoverRegion> createState() => _HoverRegionState();

0 commit comments

Comments
 (0)