userUpdateTextEditingValue method
- TextEditingValue value,
- SelectionChangedCause? cause
override
Indicates that the user has requested the delegate to replace its current
text editing state with value.
The new value is treated as user input and thus may subject to input
formatting.
See also:
- EditableTextState.userUpdateTextEditingValue: an implementation that
applies additional pre-processing to the specified
value, before updating the text editing state.
Implementation
@override
void userUpdateTextEditingValue(TextEditingValue value, SelectionChangedCause? cause) {
// Compare the current TextEditingValue with the pre-format new
// TextEditingValue value, in case the formatter would reject the change.
final bool shouldShowCaret = widget.readOnly
? _value.selection != value.selection
: _value != value;
if (shouldShowCaret) {
_scheduleShowCaretOnScreen(withAnimation: true);
}
// Even if the value doesn't change, it may be necessary to focus and build
// the selection overlay. For example, this happens when right clicking an
// unfocused field that previously had a selection in the same spot.
if (value == textEditingValue) {
if (!widget.focusNode.hasFocus) {
_flagInternalFocus();
widget.focusNode.requestFocus();
_selectionOverlay ??= _createSelectionOverlay();
}
return;
}
_formatAndSetValue(value, cause, userInteraction: true);
}