fix: Cancel taps that start inside the component and end outside #3805
+62
−0
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.
Description
Tap that starts inside the component and ends outside of it results in the usual onTapUp call in the dispatcher, but this call does not reach the component in which it started, because only the components in which this tap ended are used.
These changes cancel all taps that were not successfully completed.
I guess the changes also affect the behavior of continuePropagation: if someone previously set it to false in onTapUp, other components wouldn't receive either a TapUpEvent or a TapCancelEvent. Now they will receive a TapCancelEvent. If the original behavior was truly necessary, I think it's better to separate it out into a new finish state, something like "ignored TapUp".
Checklist
docsand added dartdoc comments with///.examplesordocs.Breaking Change?
Related Issues
Fixes #3804