Skip to content

Commit 3c27af4

Browse files
committed
fix: Selected index not updating when items change
If the valueListenable is set *separately* from the items changing, the selected item wouldn't change, which can cause issues if they're e.g. loaded in separately. Fixes: #392
1 parent 6413452 commit 3c27af4

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

packages/dropdown_button2/lib/src/dropdown_button2.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,11 @@ class _DropdownButton2State<T> extends State<DropdownButton2<T>> with WidgetsBin
511511
oldWidget.multiValueListenable?.removeListener(_updateSelectedIndex);
512512
widget.valueListenable?.addListener(_updateSelectedIndex);
513513
widget.multiValueListenable?.addListener(_updateSelectedIndex);
514+
} else if (widget.items?.length != oldWidget.items?.length ||
515+
Iterable<int>.generate(widget.items?.length ?? 0).any((i) =>
516+
widget.items![i].enabled != oldWidget.items![i].enabled ||
517+
widget.items![i].value != oldWidget.items![i].value)) {
518+
_updateSelectedIndex();
514519
}
515520

516521
if (widget.openDropdownListenable != oldWidget.openDropdownListenable) {

0 commit comments

Comments
 (0)