-
Notifications
You must be signed in to change notification settings - Fork 28.8k
Fix Chip delete button semantic bounds #168310
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix Chip delete button semantic bounds #168310
Conversation
width: kMinInteractiveDimension, | ||
height: kMinInteractiveDimension, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is not always this though, based on the MaterialTapTargetSize and VisualDensity, it could be a different rect correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I hesitated on this because it is not clear from the Material spec that the tap target size should change based on visual density.
But you're right: it is preferable to follow what is done in most of the Flutter Material widget.
I updated he PR, using the same logic than several Flutter widgets (radio, checkbox). Which means tap target size defaults to:
- 48x48 on mobile
- 32x32 on desktop
For reference, see
flutter/packages/flutter/lib/src/material/checkbox.dart
Lines 519 to 529 in c02d22d
Size size = switch (effectiveMaterialTapTargetSize) { | |
MaterialTapTargetSize.padded => const Size( | |
kMinInteractiveDimension, | |
kMinInteractiveDimension, | |
), | |
MaterialTapTargetSize.shrinkWrap => const Size( | |
kMinInteractiveDimension - 8.0, | |
kMinInteractiveDimension - 8.0, | |
), | |
}; | |
size += effectiveVisualDensity.baseSizeAdjustment; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am also a bit torn at this, according to material guide there are no exception. and the WCAG has lower limit of 44px. the only guideline that allows for a smaller sizes are google internal guideline (only googler can see, tldr: for web/desktop, prefer 48 pixel but must > 24 pixel), but I think we should just go with 48px so that we don't get into trouble when fulfilling public guideline.
I think the logic of smaller size in different mode originate from
https://github.com/flutter/flutter/pull/18369/files. cc @jonahwilliams , Do you have any insight on how the smaller size are picked?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
actually nvm, there is a clause in WCAG as well
https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum
and the lower bound is also 24. we should be fine here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for sharing these links. Especially because several existing Flutter widgets use a similar logic (reducing the lower bounds on destop to 32x32), it is good to know that we are fine.
@override | ||
Rect get semanticBounds => Rect.fromCenter( | ||
center: paintBounds.center, | ||
width: kMinInteractiveDimension, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what if the paint size is larger than kMinInteractiveDimension already? maybe this should be a math.min between the actual size and the interactive size?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, thanks. 🙏
Do you mean math.max instead of math.min? (using the paint size when it is larger than kMinInteractiveDimension).
bf68169
to
80e1fd6
Compare
return Semantics( | ||
container: true, | ||
button: true, | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just after we actually call _buildDeleteIcon, some similar logic is used. we should ensure the semantic size is consistent, since it is also used for custom hit testing. This is why the hit test area is ok with the right tap target size and visual density, but the semantic bounds did not reflect that.
The constraints that are similarly computed are down near the use of _ChipRedirectingHitDetectionWidget. Maybe we can consolidate the similar logic to compute before we call _buildDeleteIcon, and just pass the size to the method?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I looked more closely at the current hit area logic and at the M3 Chip specification (this is the first time I work on the Chip widget 😅 ).
From the specification (see https://m3.material.io/components/chips/specs#1dcff1cb-22f5-41da-809e-6c85b467cff1):
And in the table below the diagram:
From the current Chip implementation:
- the default height of the hit target area is correct: 48dp on mobile (the visual height of the Chip is 32 which is compliant and the total height is expanded to 48 due to _ChipRedirectingHitDetectionWidget).
- the default width of the hit target area is not correct: 36dp on mobile. It seems the motivation for that was to avoid that the tap area of the delete icon overflows over the label area.
If we don't want a fix where the hit target area and the semantic area are not exactly the same (this PR), it means that the current Chip implementation should be fixed by:
- extending the default hit area to overflows over the label
- extending the default hit area to overflows out of the Chip right border. This seems to be expected from the M3 spec because the center of the delete icon is at 17 pixels from the Chip right border (iconWidth / 2 + iconRightPadding = 18/2 + 8). So the hit area should overflows by 7 pixels outside of the Chip border to comply with the 48x48 tap area.
I can work on this. I expect the second change (extending the hit area outside the Chip border) to break several existing tests and Google tests (as that the default chip width on mobile will be larger than now).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah ok! Thank you for explaining and digging in to this!
@@ -6167,6 +6167,96 @@ void main() { | |||
SystemMouseCursors.forbidden, | |||
); | |||
}); | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To ensure the custom hit test and the semantic bounds match up and we haven't regressed anything, can you add a test where the delete button is larger than 48x48 - if that is possible? I am less familiar with this widget, and it is surprisingly complex. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will try, but I'm not confident for the moment that we can get the hit test and semantics bounds always matching (the calculation for the hit logic area is complex. Looking at the history, It looks like Greg tried hard to get a logic that fits most of the use cases and that it was not an easy task). Let me experiment and share my findings.
'Delete button semantic tap target can be larger than the minimum interactive dimension' - if that is possible?
Yes, it is possible, for instance by increasing the label font size and the icon size (I did it in one of the test I added in the second commit for this PR). I will also try to see the effect of increasing text scaling.
@@ -2425,6 +2433,55 @@ bool _hitIsOnDeleteIcon({ | |||
}; | |||
} | |||
|
|||
class _DeleteButtonSemantic extends SingleChildRenderObjectWidget { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: should probably name something like ensureMinSemanticsSize
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_EnsureMinSemanticsSize*
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should consider (separately) if this would be a useful wrapper widget in the core framework.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should consider (separately) if this would be a useful wrapper widget in the core framework.
Interesting discussion!
A wrapper widget which manages the interactive minimum size for both hit testing and Semantics (to get them correct and in sync) might be useful.
It somewhat already exists as a private class named _InputPadding
which is duplicated in button_style_button.dart and toggle_buttons.dart.
About _EnsureMinSemanticSize
, I'm not sure it is something we want to promote because it does not ensure that the Semantics area bounds are in synch with the hit area bounds. It is useful in the Chip context because it would be a breaking change to modify now the hit area bounds (as it will require to add padding on the left side of every InputChip with a delete icon, and then maybe to all chips because otherwise developers would have to compensate for this padding specifically for some chips and not for others).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with the nit from @chunhtai regarding the name. Thank you!
return Semantics( | ||
container: true, | ||
button: true, | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah ok! Thank you for explaining and digging in to this!
80e1fd6
to
6903ebe
Compare
Updated the google test to passing, it was a screenshot of semantic bounds. :) |
auto label is removed for flutter/flutter/168310, Failed to enqueue flutter/flutter/168310 with HTTP 400: GraphQL mutate failed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, except one minor optimization
Co-authored-by: chunhtai <[email protected]>
Thanks @chunhtai! Committed. |
autosubmit label was removed for flutter/flutter/168310, because - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label. |
Roll Flutter from 9a78af5eb067 to 33cdd8ef31dc (60 revisions) flutter/flutter@9a78af5...33cdd8e 2025-05-21 [email protected] Feat: Add persistentFooterDecoration for scaffold (flutter/flutter#167524) 2025-05-21 [email protected] Removed repeated entry in `CHANGELOG.md` (flutter/flutter#165273) 2025-05-21 [email protected] [native assets] Graduate to preview (flutter/flutter#169194) 2025-05-21 [email protected] [Impeller] disable gl ext render to texture on vivante. (flutter/flutter#169153) 2025-05-21 [email protected] fix(widget_inspector): add null check for flex factor property to prevent exception (flutter/flutter#167890) 2025-05-21 [email protected] Unpin leak_tracker. (flutter/flutter#169079) 2025-05-21 [email protected] runtime/dart: fuchsia::io::MODE_TYPE_FILE -> V_TYPE_FILE (flutter/flutter#168952) 2025-05-21 [email protected] Remove `isExplicitPackageDependenciesEnabled: true`, it is the default. (flutter/flutter#169156) 2025-05-21 [email protected] Roll pub packages (flutter/flutter#169181) 2025-05-20 [email protected] Fix the issue with Tooltip (flutter/flutter#168546) 2025-05-20 [email protected] [native assets] Roll dependencies (flutter/flutter#169073) 2025-05-20 [email protected] Add documentation for experimental branches, update artifacts. (flutter/flutter#169109) 2025-05-20 [email protected] [flutter_tool] Remove unused environment flags in JS compiler (flutter/flutter#169097) 2025-05-20 [email protected] Add support for hiding widget subtrees from the widget inspector (flutter/flutter#169007) 2025-05-20 [email protected] Roll Fuchsia GN SDK from jsZSHIOmQAs3URvWU... to _tkqOQZ2qB5CxDe57... (flutter/flutter#169113) 2025-05-20 [email protected] Skip running `Linux fuchsia_test` on non-master channel. (flutter/flutter#169106) 2025-05-19 [email protected] Roll Skia from c97451da059f to 13a299964c9f (61 revisions) (flutter/flutter#169099) 2025-05-19 [email protected] Shared element transition for predictive back (flutter/flutter#154718) 2025-05-19 [email protected] Fix DDC library bundle format test files to correctly pass flags (flutter/flutter#169095) 2025-05-19 [email protected] Clean up redundant new line in the GPUSurfaceGLSkia constructor initializer list (flutter/flutter#169031) 2025-05-19 [email protected] Fix keyboard_hot_restart_ios flakes (flutter/flutter#168518) 2025-05-19 [email protected] fix android studio lint about lambda argument (flutter/flutter#168901) 2025-05-19 [email protected] Fix typo in gpu_surface_gl_impeller.cc (flutter/flutter#168395) 2025-05-19 [email protected] Modernize system executable detection across components (flutter/flutter#169018) 2025-05-19 [email protected] Update documentation for `Size` and `Rect` classes (flutter/flutter#168031) 2025-05-19 [email protected] Update the `RangeSlider` widget to the 2024 Material Design appearance (flutter/flutter#163736) 2025-05-19 [email protected] Roll Packages from 58d4016 to af0b9a9 (5 revisions) (flutter/flutter#169075) 2025-05-19 [email protected] Only bundle assets and plugins from transitive closure of dependencies (flutter/flutter#160443) 2025-05-19 [email protected] Make FlutterGeneratedPluginSwiftPackage an Xcode root package (flutter/flutter#168789) 2025-05-19 [email protected] docs: Update deprecation message for Slider.year2023 (flutter/flutter#169053) 2025-05-18 [email protected] macOS: port ResizeSynchronizer to Swift (flutter/flutter#168959) 2025-05-17 [email protected] Roll Dart SDK from dc323ec0c1a3 to 7c40eba6bf77 (3 revisions) (flutter/flutter#169024) 2025-05-17 [email protected] [tool] Remove unused `reportNullSafety` getter (flutter/flutter#168484) 2025-05-17 [email protected] Add flag to skip bundling extension safe builds in frameworks for DDM (flutter/flutter#168955) 2025-05-16 [email protected] Fixes Navigator calls onPopInvokedWithResult when onPopPage return false (flutter/flutter#168567) 2025-05-16 [email protected] [hcpp/hc] Fix talkback for HC and HCPP Android platform views (flutter/flutter#168939) 2025-05-16 [email protected] [Impeller] separate immutable sampler descriptors. (flutter/flutter#169011) 2025-05-16 [email protected] TextField magnifier stuck on long press cancel (flutter/flutter#167881) 2025-05-16 [email protected] Fix Chip delete button semantic bounds (flutter/flutter#168310) 2025-05-16 [email protected] Roll Fuchsia Linux SDK from Jj-iDG5uPOsFgY2_H... to XtPp9bBW49iDJ0wbA... (flutter/flutter#169009) 2025-05-16 [email protected] [ Widget Preview ] Refactor `@Preview()` detection and code generation (flutter/flutter#168307) 2025-05-16 [email protected] Roll Packages from 2dff621 to 58d4016 (2 revisions) (flutter/flutter#168999) 2025-05-16 [email protected] Remove `unittests` from `windows_host_engine` GN targets. (flutter/flutter#168991) 2025-05-16 [email protected] Fix bug with debugging support code not getting injected on edge devices (flutter/flutter#168073) 2025-05-16 [email protected] Roll Dart SDK from a1db62a5dd14 to dc323ec0c1a3 (4 revisions) (flutter/flutter#168989) 2025-05-16 [email protected] Resolve Cupertino textstyle in MaterialBasedCupertinoThemeData (flutter/flutter#167597) ...
…r#9305) Roll Flutter from 9a78af5eb067 to 33cdd8ef31dc (60 revisions) flutter/flutter@9a78af5...33cdd8e 2025-05-21 [email protected] Feat: Add persistentFooterDecoration for scaffold (flutter/flutter#167524) 2025-05-21 [email protected] Removed repeated entry in `CHANGELOG.md` (flutter/flutter#165273) 2025-05-21 [email protected] [native assets] Graduate to preview (flutter/flutter#169194) 2025-05-21 [email protected] [Impeller] disable gl ext render to texture on vivante. (flutter/flutter#169153) 2025-05-21 [email protected] fix(widget_inspector): add null check for flex factor property to prevent exception (flutter/flutter#167890) 2025-05-21 [email protected] Unpin leak_tracker. (flutter/flutter#169079) 2025-05-21 [email protected] runtime/dart: fuchsia::io::MODE_TYPE_FILE -> V_TYPE_FILE (flutter/flutter#168952) 2025-05-21 [email protected] Remove `isExplicitPackageDependenciesEnabled: true`, it is the default. (flutter/flutter#169156) 2025-05-21 [email protected] Roll pub packages (flutter/flutter#169181) 2025-05-20 [email protected] Fix the issue with Tooltip (flutter/flutter#168546) 2025-05-20 [email protected] [native assets] Roll dependencies (flutter/flutter#169073) 2025-05-20 [email protected] Add documentation for experimental branches, update artifacts. (flutter/flutter#169109) 2025-05-20 [email protected] [flutter_tool] Remove unused environment flags in JS compiler (flutter/flutter#169097) 2025-05-20 [email protected] Add support for hiding widget subtrees from the widget inspector (flutter/flutter#169007) 2025-05-20 [email protected] Roll Fuchsia GN SDK from jsZSHIOmQAs3URvWU... to _tkqOQZ2qB5CxDe57... (flutter/flutter#169113) 2025-05-20 [email protected] Skip running `Linux fuchsia_test` on non-master channel. (flutter/flutter#169106) 2025-05-19 [email protected] Roll Skia from c97451da059f to 13a299964c9f (61 revisions) (flutter/flutter#169099) 2025-05-19 [email protected] Shared element transition for predictive back (flutter/flutter#154718) 2025-05-19 [email protected] Fix DDC library bundle format test files to correctly pass flags (flutter/flutter#169095) 2025-05-19 [email protected] Clean up redundant new line in the GPUSurfaceGLSkia constructor initializer list (flutter/flutter#169031) 2025-05-19 [email protected] Fix keyboard_hot_restart_ios flakes (flutter/flutter#168518) 2025-05-19 [email protected] fix android studio lint about lambda argument (flutter/flutter#168901) 2025-05-19 [email protected] Fix typo in gpu_surface_gl_impeller.cc (flutter/flutter#168395) 2025-05-19 [email protected] Modernize system executable detection across components (flutter/flutter#169018) 2025-05-19 [email protected] Update documentation for `Size` and `Rect` classes (flutter/flutter#168031) 2025-05-19 [email protected] Update the `RangeSlider` widget to the 2024 Material Design appearance (flutter/flutter#163736) 2025-05-19 [email protected] Roll Packages from 58d4016 to af0b9a9 (5 revisions) (flutter/flutter#169075) 2025-05-19 [email protected] Only bundle assets and plugins from transitive closure of dependencies (flutter/flutter#160443) 2025-05-19 [email protected] Make FlutterGeneratedPluginSwiftPackage an Xcode root package (flutter/flutter#168789) 2025-05-19 [email protected] docs: Update deprecation message for Slider.year2023 (flutter/flutter#169053) 2025-05-18 [email protected] macOS: port ResizeSynchronizer to Swift (flutter/flutter#168959) 2025-05-17 [email protected] Roll Dart SDK from dc323ec0c1a3 to 7c40eba6bf77 (3 revisions) (flutter/flutter#169024) 2025-05-17 [email protected] [tool] Remove unused `reportNullSafety` getter (flutter/flutter#168484) 2025-05-17 [email protected] Add flag to skip bundling extension safe builds in frameworks for DDM (flutter/flutter#168955) 2025-05-16 [email protected] Fixes Navigator calls onPopInvokedWithResult when onPopPage return false (flutter/flutter#168567) 2025-05-16 [email protected] [hcpp/hc] Fix talkback for HC and HCPP Android platform views (flutter/flutter#168939) 2025-05-16 [email protected] [Impeller] separate immutable sampler descriptors. (flutter/flutter#169011) 2025-05-16 [email protected] TextField magnifier stuck on long press cancel (flutter/flutter#167881) 2025-05-16 [email protected] Fix Chip delete button semantic bounds (flutter/flutter#168310) 2025-05-16 [email protected] Roll Fuchsia Linux SDK from Jj-iDG5uPOsFgY2_H... to XtPp9bBW49iDJ0wbA... (flutter/flutter#169009) 2025-05-16 [email protected] [ Widget Preview ] Refactor `@Preview()` detection and code generation (flutter/flutter#168307) 2025-05-16 [email protected] Roll Packages from 2dff621 to 58d4016 (2 revisions) (flutter/flutter#168999) 2025-05-16 [email protected] Remove `unittests` from `windows_host_engine` GN targets. (flutter/flutter#168991) 2025-05-16 [email protected] Fix bug with debugging support code not getting injected on edge devices (flutter/flutter#168073) 2025-05-16 [email protected] Roll Dart SDK from a1db62a5dd14 to dc323ec0c1a3 (4 revisions) (flutter/flutter#168989) 2025-05-16 [email protected] Resolve Cupertino textstyle in MaterialBasedCupertinoThemeData (flutter/flutter#167597) ...
…r#9305) Roll Flutter from 9a78af5eb067 to 33cdd8ef31dc (60 revisions) flutter/flutter@9a78af5...33cdd8e 2025-05-21 [email protected] Feat: Add persistentFooterDecoration for scaffold (flutter/flutter#167524) 2025-05-21 [email protected] Removed repeated entry in `CHANGELOG.md` (flutter/flutter#165273) 2025-05-21 [email protected] [native assets] Graduate to preview (flutter/flutter#169194) 2025-05-21 [email protected] [Impeller] disable gl ext render to texture on vivante. (flutter/flutter#169153) 2025-05-21 [email protected] fix(widget_inspector): add null check for flex factor property to prevent exception (flutter/flutter#167890) 2025-05-21 [email protected] Unpin leak_tracker. (flutter/flutter#169079) 2025-05-21 [email protected] runtime/dart: fuchsia::io::MODE_TYPE_FILE -> V_TYPE_FILE (flutter/flutter#168952) 2025-05-21 [email protected] Remove `isExplicitPackageDependenciesEnabled: true`, it is the default. (flutter/flutter#169156) 2025-05-21 [email protected] Roll pub packages (flutter/flutter#169181) 2025-05-20 [email protected] Fix the issue with Tooltip (flutter/flutter#168546) 2025-05-20 [email protected] [native assets] Roll dependencies (flutter/flutter#169073) 2025-05-20 [email protected] Add documentation for experimental branches, update artifacts. (flutter/flutter#169109) 2025-05-20 [email protected] [flutter_tool] Remove unused environment flags in JS compiler (flutter/flutter#169097) 2025-05-20 [email protected] Add support for hiding widget subtrees from the widget inspector (flutter/flutter#169007) 2025-05-20 [email protected] Roll Fuchsia GN SDK from jsZSHIOmQAs3URvWU... to _tkqOQZ2qB5CxDe57... (flutter/flutter#169113) 2025-05-20 [email protected] Skip running `Linux fuchsia_test` on non-master channel. (flutter/flutter#169106) 2025-05-19 [email protected] Roll Skia from c97451da059f to 13a299964c9f (61 revisions) (flutter/flutter#169099) 2025-05-19 [email protected] Shared element transition for predictive back (flutter/flutter#154718) 2025-05-19 [email protected] Fix DDC library bundle format test files to correctly pass flags (flutter/flutter#169095) 2025-05-19 [email protected] Clean up redundant new line in the GPUSurfaceGLSkia constructor initializer list (flutter/flutter#169031) 2025-05-19 [email protected] Fix keyboard_hot_restart_ios flakes (flutter/flutter#168518) 2025-05-19 [email protected] fix android studio lint about lambda argument (flutter/flutter#168901) 2025-05-19 [email protected] Fix typo in gpu_surface_gl_impeller.cc (flutter/flutter#168395) 2025-05-19 [email protected] Modernize system executable detection across components (flutter/flutter#169018) 2025-05-19 [email protected] Update documentation for `Size` and `Rect` classes (flutter/flutter#168031) 2025-05-19 [email protected] Update the `RangeSlider` widget to the 2024 Material Design appearance (flutter/flutter#163736) 2025-05-19 [email protected] Roll Packages from 58d4016 to af0b9a9 (5 revisions) (flutter/flutter#169075) 2025-05-19 [email protected] Only bundle assets and plugins from transitive closure of dependencies (flutter/flutter#160443) 2025-05-19 [email protected] Make FlutterGeneratedPluginSwiftPackage an Xcode root package (flutter/flutter#168789) 2025-05-19 [email protected] docs: Update deprecation message for Slider.year2023 (flutter/flutter#169053) 2025-05-18 [email protected] macOS: port ResizeSynchronizer to Swift (flutter/flutter#168959) 2025-05-17 [email protected] Roll Dart SDK from dc323ec0c1a3 to 7c40eba6bf77 (3 revisions) (flutter/flutter#169024) 2025-05-17 [email protected] [tool] Remove unused `reportNullSafety` getter (flutter/flutter#168484) 2025-05-17 [email protected] Add flag to skip bundling extension safe builds in frameworks for DDM (flutter/flutter#168955) 2025-05-16 [email protected] Fixes Navigator calls onPopInvokedWithResult when onPopPage return false (flutter/flutter#168567) 2025-05-16 [email protected] [hcpp/hc] Fix talkback for HC and HCPP Android platform views (flutter/flutter#168939) 2025-05-16 [email protected] [Impeller] separate immutable sampler descriptors. (flutter/flutter#169011) 2025-05-16 [email protected] TextField magnifier stuck on long press cancel (flutter/flutter#167881) 2025-05-16 [email protected] Fix Chip delete button semantic bounds (flutter/flutter#168310) 2025-05-16 [email protected] Roll Fuchsia Linux SDK from Jj-iDG5uPOsFgY2_H... to XtPp9bBW49iDJ0wbA... (flutter/flutter#169009) 2025-05-16 [email protected] [ Widget Preview ] Refactor `@Preview()` detection and code generation (flutter/flutter#168307) 2025-05-16 [email protected] Roll Packages from 2dff621 to 58d4016 (2 revisions) (flutter/flutter#168999) 2025-05-16 [email protected] Remove `unittests` from `windows_host_engine` GN targets. (flutter/flutter#168991) 2025-05-16 [email protected] Fix bug with debugging support code not getting injected on edge devices (flutter/flutter#168073) 2025-05-16 [email protected] Roll Dart SDK from a1db62a5dd14 to dc323ec0c1a3 (4 revisions) (flutter/flutter#168989) 2025-05-16 [email protected] Resolve Cupertino textstyle in MaterialBasedCupertinoThemeData (flutter/flutter#167597) ...
Description
This PR fixes Chip's delete icon semantic tap target.
Chip implementation extends the hit area of the delete icon but it did not expand the semantic bounds.
Before
After
Related Issue
Fixes Chip delete button tap target does not meet platform recommended tap target size
Tests
Adds 1 test.