onSingleLongTapStart method

  1. @protected
void onSingleLongTapStart(
  1. LongPressStartDetails details
)

Handler for TextSelectionGestureDetector.onSingleLongTapStart.

By default, it selects text position specified in details if selection is enabled.

See also:

Implementation

@protected
void onSingleLongTapStart(LongPressStartDetails details) {
  if (!delegate.selectionEnabled) {
    return;
  }
  switch (defaultTargetPlatform) {
    case TargetPlatform.iOS:
    case TargetPlatform.macOS:
      if (!renderEditable.hasFocus) {
        _longPressStartedWithoutFocus = true;
        renderEditable.selectWord(cause: SelectionChangedCause.longPress);
      } else if (renderEditable.readOnly) {
        renderEditable.selectWord(cause: SelectionChangedCause.longPress);
        if (editableText.context.mounted) {
          Feedback.forLongPress(editableText.context);
        }
      } else {
        renderEditable.selectPositionAt(
          from: details.globalPosition,
          cause: SelectionChangedCause.longPress,
        );
        // Show the floating cursor.
        final RawFloatingCursorPoint cursorPoint = RawFloatingCursorPoint(
          state: FloatingCursorDragState.Start,
          startLocation: (
            renderEditable.globalToLocal(details.globalPosition),
            TextPosition(
              offset: editableText.textEditingValue.selection.baseOffset,
              affinity: editableText.textEditingValue.selection.affinity,
            ),
          ),
          offset: Offset.zero,
        );
        editableText.updateFloatingCursor(cursorPoint);
      }
    case TargetPlatform.android:
    case TargetPlatform.fuchsia:
    case TargetPlatform.linux:
    case TargetPlatform.windows:
      renderEditable.selectWord(cause: SelectionChangedCause.longPress);
      if (editableText.context.mounted) {
        Feedback.forLongPress(editableText.context);
      }
  }

  _showMagnifierIfSupportedByPlatform(details.globalPosition);

  _dragStartViewportOffset = renderEditable.offset.pixels;
  _dragStartScrollOffset = _scrollPosition;
}