selectWordsInRange method

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

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({
  required Offset from,
  Offset? to,
  required SelectionChangedCause cause,
}) {
  // _layoutText(minWidth: constraints.minWidth, maxWidth: constraints.maxWidth);
  if (onSelectionChanged == null) {
    return;
  }
  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,
  );
}