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(); },