getExtentEndpointForSelection method Null safety

  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 = getContainer().queryChild(selection.end, false).node;

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

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