Repository: flutter
Issue: Triple tap gestures in a TextField are blocked by selection handles overlay in some situations
Labels: a: text input,framework,c: proposal,P2,team-framework,triaged-framework

# Problem: 
On certain platforms like iOS, when the selection handles overlay pop up on a `double-tap`, a third tap might be prevented from being detected by the `TextSelectionGestureDetector` if the consecutive tap occurs directly where the selection handles might appear.

## Flow of a triple-tap not on a word edge:
When double tapping a word, the word is selected. When this happens the selection handles overlay is shown. This Overlay contains a GestureDetector that handles dragging and tapping on the selection handles.

If a triple tap is attempted, the same sequence occurs and the word is selected and the selection handle overlay pops up on the second tap. On the third tap the paragraph is selected.

## Triple-tap at a word edge issue:
If a triple tap is attempted at the edge of a word, where the selection handles overlay pop up on a double tap, they may block the TextSelectionGestureDetector below it from receiving the third tap. The TextSelectionGestureDetector will not receive any PointerEvents for that third tap, and therefore does not participate in the GestureArena, so the third tap is never detected.

The selection handles overlay block hit testing from further propagating to widgets directly below it because `_RenderTheatre` used by `Overlay` stops hit testing after it hits the first child.
https://github.com/flutter/flutter/blob/f4caee6efbc0b0094f3cee9e31a7486e3d030819/packages/flutter/lib/src/widgets/overlay.dart#L842-L854

## Proposed Solutions:
1. Use `IgnorePointer` and its `ignoring` parameter to conditionally make the selection handles overlay invisible to hit testing to allow the third tap to propagate to the `TextSelectionGestureDetector` below it. On a double-tap down, `ignoring` would be set to enabled and when the consecutive tap tracker resets (this means there is no possibility of having further consecutive taps) we disable `ignoring`.
- Introduces a new API in `EditableText` to toggle the selection handles ignoring flag.
- Introduces a new API in `SelectionOverlay` to rebuild selection handles.
- Introduces a new API in `SelectionOverlay` and `TextSelectionOverlay` to set the selection handles ignoring flag.

2. Use a new widget in the selection handle overlay that allows the handles to hit test themselves, and allow hit testing to propagate to the widgets below it.
- Widget is private, no new API introduced.
- `panSlop` of `PanGestureRecognizer` used in selection handles must be reduced so it declares acceptance faster or else there is a noticeable delay in the drag of the selection handles.

3. Use the new widget from solution 2, except add a `passThrough` parameter to conditionally allow the selection handles overlay to hit test itself and pass through hit testing to the widgets below it. On a double-tap down, `passThrough` would be set to enabled and when the consecutive tap tracker resets (this means there is no possibility of having further consecutive taps) we disable `passThrough`.
- Introduces a new API in `EditableText` to toggle the selection handles pass through flag.
- Introduces a new API in `SelectionOverlay` to rebuild selection handles.
- Introduces a new API in `SelectionOverlay` and `TextSelectionOverlay` to set the selection handles pass through flag.