-
Notifications
You must be signed in to change notification settings - Fork 29.8k
New parameter for RawGestureDetector to customize semantics mapping #33936
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
New parameter for RawGestureDetector to customize semantics mapping #33936
Conversation
Piinks
left a comment
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 looks like the analyzer found something:
- info • Avoid empty statements • packages/flutter/lib/src/widgets/gesture_detector.dart:947:6 • empty_statements
|
LGTM modulo the docs fixes and measuring the perf impact relating to the test at the end. |
goderbauer
left a comment
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 believe this is missing a tests that shows that changing RawGestureDetector.semantics from one delegate to another actually correctly updates the semantics tree?
|
@goderbauer I forgot to push my latest commits. Can you check out https://github.com/flutter/flutter/pull/33936/files#diff-322ca57cfdd8734e5234cc676b05ce2cR177 and L213? |
That seems to only tests switching from and to the DefaultDelegate. What if |
|
The last comment has been addressed by 36352c5 |
* commit 'a0c47e2216a2b50b70c478001cf5652f31a783af': (187 commits) Do not use ideographic baseline for RenderPargraph baseline (flutter#35493) Add type to StreamChannel in generated test code. (flutter#35367) Fix RenderFittedBox when child.size.isEmpty (flutter#35487) add APK build time benchmarks (flutter#35481) fix Selection handles position is off (flutter#34665) Move usage flutter create tests into memory filesystem. (flutter#35160) Include tags in SemanticsNode debug properties (flutter#35491) Re-apply 'Add currentSystemFrameTimeStamp to SchedulerBinding' (flutter#35492) CupertinoTextField vertical alignment (flutter#34723) Mark update-packages as non-experimental (flutter#35467) fix default artifacts to exclude ios and android (flutter#35303) Roll engine ffba2f6..7d3e722 (59 commits) (flutter#35489) Update macrobenchmarks README and app name (flutter#35477) mark windows and macos chrome dev mode as flaky (flutter#35495) Use the new service protocol message names (flutter#35482) Manual roll of engine 45b66b7...ffba2f6 (flutter#35464) more ui-as-code (flutter#35393) update reassemble doc (flutter#35164) New parameter for RawGestureDetector to customize semantics mapping (flutter#33936) Add --target support for Windows and Linux (flutter#34660) ...
…lutter#33936) This PR adds a new parameter to RawGestureDetector, `semantics`, which configures how detectors handle semantics gestures. It has a default delegate that keep the current behavior.
Description
While I'm writing #32770, which involves a custom gesture recognizer, I discovered that it is impossible for custom gestures to provide semantics information, because
RawGestureDetectorhard-coded how it generates them and only supports the "official" gesture recognizers.This PR adds a new parameter to
RawGestureDetector,SemanticsGestureDelegate semanticsconfigures how detectors handle semantics gestures. It has a default delegate that keep the current behavior.SemanticsGestureDelegatehas a method that allows customGestureDetectors to define the semantics annotations to add.Regarding the changed test
A test "cache unchanged callbacks" has been changed so that it is no longer required to cache callbacks.
RenderSemanticsGestureHandler. It will invokemarkNeedsSemanticsUpdateonly when it is changed from null to non-null and vice-versa, but not if callback changes in other cases, according to code.SemanticsGestureDelegatemore complicated. To cache it, the delegate must be stored in aState, which requires the custom gesture detector to be stateful.This change has been discussed with and approved by @goderbauer.
Related Issues
Tests
I added the following tests:
I changed the following tests:
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (
[x]). This will ensure a smooth and quick review process.///).flutter analyze --flutter-repo) does not report any problems on my PR.Breaking Change
Does your PR require Flutter developers to manually update their apps to accommodate your change?