Fix DropdownButton bug (#65915)
diff --git a/packages/flutter/lib/src/material/dropdown.dart b/packages/flutter/lib/src/material/dropdown.dart
index 5dea30b..8fb9946 100644
--- a/packages/flutter/lib/src/material/dropdown.dart
+++ b/packages/flutter/lib/src/material/dropdown.dart
@@ -1303,16 +1303,12 @@
// The width of the button and the menu are defined by the widest
// item and the width of the hint.
- List<Widget> items;
- if (_enabled) {
- items = widget.selectedItemBuilder == null
- ? List<Widget>.from(widget.items!)
- : widget.selectedItemBuilder!(context);
- } else {
- items = widget.selectedItemBuilder == null
- ? <Widget>[]
- : widget.selectedItemBuilder!(context);
- }
+ // We should explicitly type the items list to be a list of <Widget>,
+ // otherwise, no explicit type adding items maybe trigger a crash/failure
+ // when hint and selectedItemBuilder are provided.
+ final List<Widget> items = widget.selectedItemBuilder == null
+ ? (_enabled ? List<Widget>.from(widget.items!) : <Widget>[])
+ : List<Widget>.from(widget.selectedItemBuilder!(context));
int? hintIndex;
if (widget.hint != null || (!_enabled && widget.disabledHint != null)) {
diff --git a/packages/flutter/test/material/dropdown_test.dart b/packages/flutter/test/material/dropdown_test.dart
index a49aea6..6125564 100644
--- a/packages/flutter/test/material/dropdown_test.dart
+++ b/packages/flutter/test/material/dropdown_test.dart
@@ -1945,7 +1945,7 @@
});
},
selectedItemBuilder: (BuildContext context) {
- return items.map<Widget>((String item) {
+ return items.map((String item) {
return Text('You have selected: $item');
}).toList();
},