From 3c27af43bb72a95cb9de1f27b3a31b6574d2c41e Mon Sep 17 00:00:00 2001 From: "re:fi.64" Date: Thu, 17 Jul 2025 20:31:59 -0500 Subject: [PATCH] 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 --- packages/dropdown_button2/lib/src/dropdown_button2.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/dropdown_button2/lib/src/dropdown_button2.dart b/packages/dropdown_button2/lib/src/dropdown_button2.dart index 89d082b..df7454d 100644 --- a/packages/dropdown_button2/lib/src/dropdown_button2.dart +++ b/packages/dropdown_button2/lib/src/dropdown_button2.dart @@ -511,6 +511,11 @@ class _DropdownButton2State extends State> with WidgetsBin oldWidget.multiValueListenable?.removeListener(_updateSelectedIndex); widget.valueListenable?.addListener(_updateSelectedIndex); widget.multiValueListenable?.addListener(_updateSelectedIndex); + } else if (widget.items?.length != oldWidget.items?.length || + Iterable.generate(widget.items?.length ?? 0).any((i) => + widget.items![i].enabled != oldWidget.items![i].enabled || + widget.items![i].value != oldWidget.items![i].value)) { + _updateSelectedIndex(); } if (widget.openDropdownListenable != oldWidget.openDropdownListenable) {