-
Notifications
You must be signed in to change notification settings - Fork 68
Open
Description
Describe the bug
When reducing the list size of the labels, I am getting a RangeError. I am not sure if I am doing something wrong or if this is an actual bug.
To Reproduce
Press on button to change the size of Label list.
bool showMoreLabels = true;
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'showMoreLabels: $showMoreLabels',
),
const SizedBox(height: 10.0,),
TextButton(
style: const ButtonStyle(
backgroundColor: WidgetStatePropertyAll(Colors.blue),
iconSize: WidgetStatePropertyAll(20.0),
),
onPressed: () => {
setState(() {
showMoreLabels = !showMoreLabels;
})
},
child: const Text(
'Press here to show more or less labels',
),
),
const SizedBox(height: 20.0,),
ToggleSwitch(
minWidth: 100,
initialLabelIndex: 0,
totalSwitches: showMoreLabels ? 2 : 1,
labels: showMoreLabels ? const ['MORE', 'LABELS'] : const ['LESS'],
onToggle: (index) {
if (kDebugMode) {
print('onToggle: $index');
}
},
)
],
)
This also happens when you try to reduce from n to (n-1 or more) labels. Increasing the label size work just fine.
The stacktrace is shown below.
======== Exception caught by widgets library =======================================================
The following RangeError was thrown building ToggleSwitch(dependencies: [InheritedCupertinoTheme, MediaQuery, _InheritedTheme, _LocalizationsScope-[GlobalKey#2fbbf]], state: _ToggleSwitchState#94aed):
RangeError (length): Invalid value: Only valid value is 0: 1
The relevant error-causing widget was:
ToggleSwitch ToggleSwitch:file:///Users/imaduddin.mohammed/Downloads/toggle_switch_test/lib/main.dart:105:13
When the exception was thrown, this was the stack:
#0 _Array.[] (dart:core-patch/array.dart)
#1 _ToggleSwitchState._switchItem (package:toggle_switch/toggle_switch.dart:402:41)
#2 _ToggleSwitchState.build.<anonymous closure> (package:toggle_switch/toggle_switch.dart:263:22)
#3 new _GrowableList.generate (dart:core-patch/growable_array.dart:136:28)
#4 _ToggleSwitchState.build (package:toggle_switch/toggle_switch.dart:253:26)
#5 StatefulElement.build (package:flutter/src/widgets/framework.dart:5729:27)
#6 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5617:15)
#7 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#8 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#9 StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#10 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#11 Element.updateChildren (package:flutter/src/widgets/framework.dart:4090:32)
#12 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:7060:17)
#13 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#14 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6907:14)
#15 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#17 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#18 StatelessElement.update (package:flutter/src/widgets/framework.dart:5693:5)
#19 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#20 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#21 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#22 StatelessElement.update (package:flutter/src/widgets/framework.dart:5693:5)
#23 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#24 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#25 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#26 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#27 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#28 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#29 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#30 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#31 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#32 Element.updateChildren (package:flutter/src/widgets/framework.dart:4090:32)
#33 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:7060:17)
#34 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#35 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#36 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#37 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#38 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#39 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#40 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#41 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#42 StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#43 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#44 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#45 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#46 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#47 StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#48 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#49 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#50 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#51 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#52 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#53 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#54 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#55 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#56 StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#57 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#58 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6907:14)
#59 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#60 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#61 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#62 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#63 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#64 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6907:14)
#65 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#66 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#67 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#68 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#69 StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#70 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#71 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#72 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#73 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#74 StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#75 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#76 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#77 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#78 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#79 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#80 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#81 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#82 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#83 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#84 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#85 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#86 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#87 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#88 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#89 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#90 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#91 StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#92 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#93 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#94 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#95 ProxyElement.update (package:flutter/src/widgets/framework.dart:5946:5)
#96 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#97 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#98 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#99 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#100 StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#101 Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#102 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#103 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#104 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#105 BuildScope._tryRebuild (package:flutter/src/widgets/framework.dart:2693:15)
#106 BuildScope._flushDirtyElements (package:flutter/src/widgets/framework.dart:2752:11)
#107 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3048:18)
#108 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1162:21)
#109 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:468:5)
#110 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1397:15)
#111 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1318:9)
#112 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1176:5)
#113 _invoke (dart:ui/hooks.dart:312:13)
#114 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:419:5)
#115 _drawFrame (dart:ui/hooks.dart:283:31)
Expected behaviour
The toggle switch to show just one option on clicking of the button.
Screenshots
I hope the video recording below can explain the problem better.
toggle_switch_bug_flutter.mp4
Additional information
toggle_switch^2.3.0flutter doctor -v
[✓] Flutter (Channel stable, 3.24.0, on macOS 14.6.1 23G93 darwin-arm64, locale en-AU)
• Flutter version 3.24.0 on channel stable at /Users/imaduddin.mohammed/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 80c2e84975 (3 weeks ago), 2024-07-30 23:06:49 +0700
• Engine revision b8800d88be
• Dart version 3.5.0
• DevTools version 2.37.2
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
• Android SDK at /Users/imaduddin.mohammed/Library/Android/sdk
• Platform android-35, build-tools 35.0.0
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 15F31d
• CocoaPods version 1.15.2
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2024.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.11+0-17.0.11b1207.24-11852314)
[✓] VS Code (version 1.92.2)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.94.0
[✓] Connected device (4 available)
• SM T630 (mobile) • R52X505VPXF • android-arm64 • Android 14 (API 34)
• macOS (desktop) • macos • darwin-arm64 • macOS 14.6.1 23G93 darwin-arm64
• Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin • macOS 14.6.1 23G93 darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 128.0.6613.84
[✓] Network resources
• All expected network resources are available.
• No issues found!
- I recently upgraded from Flutter 3.7.12, Dart 2.19.6 and toggle_switch ^1.4.0 and this issue was not present then.
- This happens on both Android and iOS if that helps.
Metadata
Metadata
Assignees
Labels
No labels