Skip to content

Commit 83d73ce

Browse files
feat: Dropdown.menu_width property (#5007)
* menu_width * Fix imports --------- Co-authored-by: Feodor Fitsner <feodor@appveyor.com>
1 parent f9a5f6c commit 83d73ce

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

packages/flet/lib/src/controls/dropdown.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ class _DropdownControlState extends State<DropdownControl> with FletStoreMixin {
109109
widget.control.attrColor("focusedBorderColor", context);
110110
var borderWidth = widget.control.attrDouble("borderWidth");
111111
var focusedBorderWidth = widget.control.attrDouble("focusedBorderWidth");
112+
var menuWidth = widget.control.attrDouble("menuWidth") ?? double.infinity;
112113

113114
FormFieldInputBorder inputBorder = parseFormFieldInputBorder(
114115
widget.control.attrString("border"),
@@ -274,7 +275,7 @@ class _DropdownControlState extends State<DropdownControl> with FletStoreMixin {
274275
//requestFocusOnTap: editable,
275276
enableFilter: widget.control.attrBool("enableFilter", false)!,
276277
enableSearch: widget.control.attrBool("enableSearch", true)!,
277-
menuHeight: widget.control.attrDouble("maxMenuHeight"),
278+
menuHeight: widget.control.attrDouble("menuHeight"),
278279
label: labelCtrl.isNotEmpty
279280
? createControl(widget.control, labelCtrl.first.id, disabled)
280281
: label != null
@@ -320,6 +321,7 @@ class _DropdownControlState extends State<DropdownControl> with FletStoreMixin {
320321
backgroundColor: parseWidgetStateColor(
321322
Theme.of(context), widget.control, "bgcolor"),
322323
elevation: parseWidgetStateDouble(widget.control, "elevation"),
324+
fixedSize: WidgetStateProperty.all(Size.fromWidth(menuWidth)),
323325
),
324326

325327
inputDecorationTheme: inputDecorationTheme,

sdk/python/packages/flet/src/flet/core/dropdown.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,10 @@ def __init__(
173173
enable_filter: Optional[bool] = None,
174174
enable_search: Optional[bool] = None,
175175
editable: Optional[bool] = None,
176-
max_menu_height: OptionalNumber = None,
176+
max_menu_height: OptionalNumber = None, # to be discontinued
177+
menu_height: OptionalNumber = None,
178+
menu_width: OptionalNumber = None,
177179
expanded_insets: PaddingValue = None,
178-
menu_style: Optional[MenuStyle] = None,
179180
selected_suffix: Optional[Control] = None,
180181
input_filter: Optional[InputFilter] = None,
181182
capitalization: Optional[TextCapitalization] = None,
@@ -341,6 +342,7 @@ def __init__(
341342
"enable_feedback",
342343
"options_fill_horizontally",
343344
"padding",
345+
"max_menu_height",
344346
]
345347

346348
for item in deprecated_properties_list:
@@ -358,9 +360,9 @@ def __init__(
358360
self.enable_filter = enable_filter
359361
self.enable_search = enable_search
360362
self.editable = editable
361-
self.max_menu_height = max_menu_height
363+
self.menu_height = menu_height
364+
self.menu_width = menu_width
362365
self.expanded_insets = expanded_insets
363-
self.menu_style = menu_style
364366
self.capitalization = capitalization
365367
self.label_content = label_content
366368
self.leading_icon = leading_icon
@@ -430,14 +432,23 @@ def options(self) -> Optional[List[Option]]:
430432
def options(self, value: Optional[List[Option]]):
431433
self.__options = value if value is not None else []
432434

433-
# max_menu_height
435+
# menu_height
434436
@property
435-
def max_menu_height(self) -> OptionalNumber:
436-
return self._get_attr("maxMenuHeight", data_type="float")
437+
def menu_height(self) -> OptionalNumber:
438+
return self._get_attr("menuHeight", data_type="float")
437439

438-
@max_menu_height.setter
439-
def max_menu_height(self, value: OptionalNumber):
440-
self._set_attr("maxMenuHeight", value)
440+
@menu_height.setter
441+
def menu_height(self, value: OptionalNumber):
442+
self._set_attr("menuHeight", value)
443+
444+
# menu_width
445+
@property
446+
def menu_width(self) -> OptionalNumber:
447+
return self._get_attr("menuWidth", data_type="float")
448+
449+
@menu_width.setter
450+
def menu_width(self, value: OptionalNumber):
451+
self._set_attr("menuWidth", value)
441452

442453
# editable
443454
@property

0 commit comments

Comments
 (0)