From 16487338558a56d1c7f0973e163c3b90a5a1e693 Mon Sep 17 00:00:00 2001 From: Rohit Bhoite Date: Fri, 21 Nov 2025 15:50:21 +0530 Subject: [PATCH] Combobox open close event scenario handled --- lib/src/controls/form/combo_box.dart | 10 +++++++++- lib/src/controls/form/editable_combo_box.dart | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/src/controls/form/combo_box.dart b/lib/src/controls/form/combo_box.dart index a999c751d..2edb66573 100644 --- a/lib/src/controls/form/combo_box.dart +++ b/lib/src/controls/form/combo_box.dart @@ -917,6 +917,7 @@ class ComboBox extends StatefulWidget { this.focusNode, this.autofocus = false, this.popupColor, + this.onOpenChanged, // When adding new arguments, consider adding similar arguments to // ComboBoxFormField. }); @@ -971,6 +972,12 @@ class ComboBox extends StatefulWidget { /// The callback will not be invoked if the combo box button is disabled. final VoidCallback? onTap; + /// Called when the dropdown opens or closes. + /// + /// This callback is invoked with `true` when the dropdown is shown + /// and `false` when it's hidden. + final ValueChanged? onOpenChanged; + /// A builder to customize the combo box buttons corresponding to the /// [ComboBoxItem]s in [items]. /// @@ -1155,6 +1162,7 @@ class ComboBoxState extends State> { void closePopup() { _comboboxRoute?._dismiss(); _comboboxRoute = null; + widget.onOpenChanged?.call(false); } void _handleFocusChanged() { @@ -1232,7 +1240,7 @@ class ComboBoxState extends State> { barrierLabel: FluentLocalizations.of(context).modalBarrierDismissLabel, popupColor: widget.popupColor, ); - + widget.onOpenChanged?.call(true); navigator.push(_comboboxRoute!).then(( _ComboBoxRouteResult? newValue, ) { diff --git a/lib/src/controls/form/editable_combo_box.dart b/lib/src/controls/form/editable_combo_box.dart index 879e4c99f..070071bb3 100644 --- a/lib/src/controls/form/editable_combo_box.dart +++ b/lib/src/controls/form/editable_combo_box.dart @@ -27,6 +27,7 @@ class EditableComboBox extends ComboBox { super.items, super.onChanged, super.onTap, + super.onOpenChanged, super.placeholder, super.selectedItemBuilder, super.style, @@ -231,6 +232,7 @@ class ComboboxFormField extends FormField { Widget? disabledPlaceholder, required this.onChanged, VoidCallback? onTap, + ValueChanged? onOpenChanged, int elevation = 8, TextStyle? style, Widget icon = const WindowsIcon(WindowsIcons.chevron_down), @@ -278,6 +280,7 @@ class ComboboxFormField extends FormField { disabledPlaceholder: disabledPlaceholder, onChanged: onChanged == null ? null : state.didChange, onTap: onTap, + onOpenChanged: onOpenChanged, elevation: elevation, style: style, icon: icon, @@ -353,6 +356,7 @@ class EditableComboboxFormField extends FormField { Widget? placeholder, Widget? disabledPlaceholder, required this.onChanged, + ValueChanged? onOpenChanged, VoidCallback? onTap, int elevation = 8, TextStyle? style,