Document Android's SemanticsAction.tap behavior (#14031)
* Document Android's SemanticsAction.tap behavior
Fixes https://github.com/flutter/flutter/issues/13219.
* review comment
diff --git a/packages/flutter/lib/src/semantics/semantics.dart b/packages/flutter/lib/src/semantics/semantics.dart
index b6cf3bd..3678e20 100644
--- a/packages/flutter/lib/src/semantics/semantics.dart
+++ b/packages/flutter/lib/src/semantics/semantics.dart
@@ -1439,6 +1439,18 @@
///
/// VoiceOver users on iOS and TalkBack users on Android can trigger this
/// action by double-tapping the screen while an element is focused.
+ ///
+ /// On Android prior to Android Oreo a double-tap on the screen while an
+ /// element with an [onTap] handler is focused will not call the registered
+ /// handler. Instead, Android will simulate a pointer down and up event at the
+ /// center of the focused element. Those pointer events will get dispatched
+ /// just like a regular tap with TalkBack disabled would: The events will get
+ /// processed by any [GestureDetector] listening for gestures in the center of
+ /// the focused element. Therefore, to ensure that [onTap] handlers work
+ /// properly on Android versions prior to Oreo, a [GestureDetector] with an
+ /// onTap handler should always be wrapping an element that defines a
+ /// semantic [onTap] handler. By default a [GestureDetector] will register its
+ /// own semantic [onTap] handler that follows this principle.
VoidCallback get onTap => _onTap;
VoidCallback _onTap;
set onTap(VoidCallback value) {