🐛 Fix DeviceSelectorAction
NoSuchElementException
in the toolbar layout
#8515
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
(originally #8496)
This PR fixes a
NoSuchElementException
that occurs in theDeviceSelectorAction
when IntelliJ's toolbar layout system tries to calculate component widths.Problem
The error manifested as:
Root Cause
The
getPreferredSize()
method in the anonymous JButton class was being called by IntelliJ's layout system before the client properties (ICON_LABEL_KEY
,TEXT_LABEL_KEY
,ARROW_LABEL_KEY
) were set during component initialization. This caused the layout system to fail when trying to register the component in its internal maps because:Objects.requireNonNull(fm)
calls that could throw exceptionsSolution
Enhanced the
getPreferredSize()
method with defensive programming:Objects.requireNonNull(fm)
with proper null checksFlutterIcons.Mobile
, chevron down icon, and "No device selected" text widthImpact
NoSuchElementException
during toolbar initializationFixes #8494.