getExtentEndpointForSelection method

  1. @override
TextSelectionPoint getExtentEndpointForSelection(
  1. TextSelection selection
)
override

Returns a point for the extent selection handle used on touch-oriented devices.

The selection parameter is expected to be in local offsets to this render object's node.

Implementation

@override
TextSelectionPoint getExtentEndpointForSelection(TextSelection selection) {
  if (selection.isCollapsed) {
    return TextSelectionPoint(
        Offset(0, preferredLineHeight(selection.extent)) + getOffsetForCaret(selection.extent), null);
  }

  final extentNode = container.queryChild(selection.end, false).node;

  var extentChild = firstChild;
  while (extentChild != null) {
    if (extentChild.container == extentNode) {
      break;
    }
    extentChild = childAfter(extentChild);
  }
  assert(extentChild != null);

  final extentPoint =
      extentChild!.getExtentEndpointForSelection(localSelection(extentChild.container, selection, true));
  return TextSelectionPoint(
      extentPoint.point + (extentChild.parentData as BoxParentData).offset, extentPoint.direction);
}