Repository navigation
[material_ui] Migrate M3 IconButton template to use new gen_defaults - #12922
QuncCccccc wants to merge 2 commits into
Conversation
…ults_migration # Conflicts: # packages/material_ui/lib/src/icon_button.dart # packages/material_ui/tool/gen_defaults/bin/gen_defaults.dart # packages/material_ui/tool/gen_defaults/templates/icon_button_template.dart # packages/material_ui/tool/gen_defaults/test/gen_defaults_test.dart
There was a problem hiding this comment.
Code Review
This pull request migrates the Material 3 icon button defaults to be generated from the token database using a new IconButtonTemplateM3 template, replacing the inline implementations in icon_button.dart with generated part files and adding corresponding tests. Feedback on the changes highlights a potential inconsistency in the outlined icon button's overlay color configuration, where the focused state blocks use hoveredStateLayerOpacity instead of focusedStateLayerOpacity, and suggests either correcting this or adding a comment if it was an intentional legacy workaround.
| if (states.contains(WidgetState.focused)) { | ||
| return ${colorWithOpacity(TokenIconButtonOutlined.selectedFocusedStateLayerColor, TokenIconButtonOutlined.hoveredStateLayerOpacity)}; | ||
| } | ||
| } | ||
| if (states.contains(WidgetState.pressed)) { | ||
| return ${colorWithOpacity(TokenColorRole.onSurface, TokenIconButtonOutlined.pressedStateLayerOpacity)}; | ||
| } | ||
| if (states.contains(WidgetState.hovered)) { | ||
| return ${colorWithOpacity(TokenIconButtonOutlined.unselectedHoveredStateLayerColor, TokenIconButtonOutlined.hoveredStateLayerOpacity)}; | ||
| } | ||
| if (states.contains(WidgetState.focused)) { | ||
| return ${colorWithOpacity(TokenIconButtonOutlined.unselectedFocusedStateLayerColor, TokenIconButtonOutlined.hoveredStateLayerOpacity)}; | ||
| } |
There was a problem hiding this comment.
In the _IconButtonVariant.outlined overlay color configuration, both focused state blocks (lines 257 and 267) are using TokenIconButtonOutlined.hoveredStateLayerOpacity instead of TokenIconButtonOutlined.focusedStateLayerOpacity.\n\nIf this was done intentionally to preserve the legacy 0.08 opacity (since standard focus opacity is typically 0.12), please add a comment explaining this workaround (similar to _legacyDisabledContainerOpacity). Otherwise, if TokenIconButtonOutlined.focusedStateLayerOpacity is available and correct, please use it here to maintain consistency with the other icon button variants.
Work toward flutter/flutter#187899.
Fixes flutter/flutter#188417.
This PR migrates the M3 IconButton defaults templates to use the new
gen_defaultsinmaterial_ui.The
IconButton,IconButton.filled,IconButton.filledTonal, andIconButton.outlineddefaults are generated into separate files. The generated defaults remain unchanged.Pre-Review Checklist
[shared_preferences]///).