selectPositionAt method
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);
}