From 30256fe287dd223959c348fca2eae434f1317921 Mon Sep 17 00:00:00 2001 From: "Charl (Nitride)" <77973576+CharlVS@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:59:45 +0200 Subject: [PATCH 1/2] fix(ui): close dropdown on window resize --- packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart b/packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart index 32dadd3593..bd5e965f70 100644 --- a/packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart +++ b/packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart @@ -68,6 +68,9 @@ class _UiDropdownState extends State with WidgetsBindingObserver { _switcherOffset = renderObject.localToGlobal(Offset.zero); }); } + if (_tooltipWrapper.mounted) { + _close(); + } _tooltipWrapper = _buildTooltipWrapper(); } From 3dd68a70ee915ab9a930ce3e2991e971c83cb082 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 5 Aug 2025 16:29:42 +0000 Subject: [PATCH 2/2] Fix null safety issues in UiDropdown widget Co-authored-by: charl --- .../lib/src/buttons/ui_dropdown.dart | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart b/packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart index bd5e965f70..ea733565e5 100644 --- a/packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart +++ b/packages/komodo_ui_kit/lib/src/buttons/ui_dropdown.dart @@ -22,7 +22,7 @@ class UiDropdown extends StatefulWidget { } class _UiDropdownState extends State with WidgetsBindingObserver { - late OverlayEntry _tooltipWrapper; + OverlayEntry? _tooltipWrapper; GlobalKey _switcherKey = GlobalKey(); Size? _switcherSize; Offset? _switcherOffset; @@ -43,10 +43,10 @@ class _UiDropdownState extends State with WidgetsBindingObserver { _switcherOffset = renderObject.localToGlobal(Offset.zero); } _tooltipWrapper = _buildTooltipWrapper(); + + if (widget.isOpen) _open(); }); - if (widget.isOpen) _open(); - super.initState(); } @@ -54,7 +54,7 @@ class _UiDropdownState extends State with WidgetsBindingObserver { void didUpdateWidget(covariant UiDropdown oldWidget) { if (widget.isOpen == oldWidget.isOpen) return; - if (widget.isOpen != _tooltipWrapper.mounted) _switch(); + if (widget.isOpen != (_tooltipWrapper?.mounted ?? false)) _switch(); super.didUpdateWidget(oldWidget); } @@ -68,7 +68,7 @@ class _UiDropdownState extends State with WidgetsBindingObserver { _switcherOffset = renderObject.localToGlobal(Offset.zero); }); } - if (_tooltipWrapper.mounted) { + if (_tooltipWrapper?.mounted == true) { _close(); } _tooltipWrapper = _buildTooltipWrapper(); @@ -77,8 +77,8 @@ class _UiDropdownState extends State with WidgetsBindingObserver { @override void dispose() { WidgetsBinding.instance.removeObserver(this); - if (_tooltipWrapper.mounted) { - _tooltipWrapper.remove(); + if (_tooltipWrapper?.mounted == true) { + _tooltipWrapper!.remove(); } super.dispose(); } @@ -129,7 +129,7 @@ class _UiDropdownState extends State with WidgetsBindingObserver { } void _switch() { - if (_tooltipWrapper.mounted) { + if (_tooltipWrapper?.mounted == true) { _close(); } else { _open(); @@ -137,15 +137,19 @@ class _UiDropdownState extends State with WidgetsBindingObserver { } void _open() { - Overlay.of(context).insert(_tooltipWrapper); - final onSwitch = widget.onSwitch; - if (onSwitch != null) onSwitch(true); + if (_tooltipWrapper != null) { + Overlay.of(context).insert(_tooltipWrapper!); + final onSwitch = widget.onSwitch; + if (onSwitch != null) onSwitch(true); + } } void _close() { - _tooltipWrapper.remove(); - final onSwitch = widget.onSwitch; - if (onSwitch != null) onSwitch(false); + if (_tooltipWrapper != null) { + _tooltipWrapper!.remove(); + final onSwitch = widget.onSwitch; + if (onSwitch != null) onSwitch(false); + } } double? get _top {