selectWordEdge method Null safety
- {required SelectionChangedCause cause}
Move the selection to the beginning or end of a word.
This method is mainly used to translate user inputs in global positions into a TextSelection. When used in conjunction with a EditableText, the selection change is fed back into TextEditingController.selection.
If you have a TextEditingController, it's generally easier to
programmatically manipulate its value
or selection
directly.
Implementation
void selectWordEdge({ required SelectionChangedCause cause }) {
assert(cause != null);
_computeTextMetricsIfNeeded();
assert(_lastTapDownPosition != null);
final TextPosition position = _textPainter.getPositionForOffset(globalToLocal(_lastTapDownPosition! - _paintOffset));
final TextRange word = _textPainter.getWordBoundary(position);
late TextSelection newSelection;
if (position.offset - word.start <= 1) {
newSelection = TextSelection.collapsed(offset: word.start);
} else {
newSelection = TextSelection.collapsed(offset: word.end, affinity: TextAffinity.upstream);
}
_setSelection(newSelection, cause);
}