selectWordsInRange method
Selects the set words of a paragraph in a given range of global positions.
The first and last endpoints of the selection will always be at the beginning and end of a word respectively.
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
@override
void selectWordsInRange(
Offset from,
Offset? to,
SelectionChangedCause cause,
) {
final firstPosition = getPositionForOffset(from);
final firstWord = selectWordAtPosition(firstPosition);
final lastWord = to == null ? firstWord : selectWordAtPosition(getPositionForOffset(to));
_handleSelectionChange(
TextSelection(
baseOffset: firstWord.base.offset,
extentOffset: lastWord.extent.offset,
affinity: firstWord.affinity,
),
cause,
);
}