selection property Null safety

TextSelection selection

The currently selected text.

If the selection is collapsed, then this property gives the offset of the cursor within the text.

Implementation

TextSelection get selection => value.selection;
void selection=(TextSelection newSelection)

Setting this will notify all the listeners of this TextEditingController that they need to update (it calls notifyListeners). For this reason, this value should only be set between frames, e.g. in response to user actions, not during the build, layout, or paint phases.

This property can be set from a listener added to this TextEditingController; however, one should not also set text in a separate statement. To change both the text and the selection change the controller's value.

If the new selection is of non-zero length, or is outside the composing range, the composing range is cleared.

Implementation

set selection(TextSelection newSelection) {
  if (!isSelectionWithinTextBounds(newSelection))
    throw FlutterError('invalid text selection: $newSelection');
  final TextRange newComposing =
      newSelection.isCollapsed && _isSelectionWithinComposingRange(newSelection)
          ? value.composing
          : TextRange.empty;
  value = value.copyWith(selection: newSelection, composing: newComposing);
}