selectPositionAt method

void selectPositionAt({
  1. required Offset from,
  2. Offset? to,
  3. required SelectionChangedCause cause,
})

Select text between the global positions from and to.

from corresponds to the TextSelection.baseOffset, and to corresponds to the TextSelection.extentOffset.

Implementation

void selectPositionAt(
    {required Offset from,
    Offset? to,
    required SelectionChangedCause cause}) {
  assert(cause != null);
  assert(from != null);
  layoutText(minWidth: constraints.minWidth, maxWidth: constraints.maxWidth);
  TextPosition fromPosition =
      textPainter.getPositionForOffset(globalToLocal(from - paintOffset));
  TextPosition? toPosition = to == null
      ? null
      : textPainter.getPositionForOffset(globalToLocal(to - paintOffset));
  //zmt
  if (hasSpecialInlineSpanBase) {
    fromPosition =
        convertTextPainterPostionToTextInputPostion(text!, fromPosition)!;
    toPosition =
        convertTextPainterPostionToTextInputPostion(text!, toPosition);
  }
  final int baseOffset = fromPosition.offset;
  final int extentOffset = toPosition?.offset ?? fromPosition.offset;

  final TextSelection newSelection = TextSelection(
    baseOffset: baseOffset,
    extentOffset: extentOffset,
    affinity: fromPosition.affinity,
  );
  setSelection(newSelection, cause);
}