openConnectionIfNeeded method
void
openConnectionIfNeeded()
inherited
Implementation
void openConnectionIfNeeded() {
if (!shouldCreateInputConnection) {
return;
}
if (!hasConnection) {
_lastKnownRemoteTextEditingValue = textEditingValue;
_textInputConnection = TextInput.attach(
this,
TextInputConfiguration(
inputType: TextInputType.multiline,
readOnly: widget.config.readOnly,
inputAction: widget.config.textInputAction,
enableSuggestions: !widget.config.readOnly,
keyboardAppearance: createKeyboardAppearance(),
textCapitalization: widget.config.textCapitalization,
allowedMimeTypes: widget.config.contentInsertionConfiguration == null
? const <String>[]
: widget.config.contentInsertionConfiguration!.allowedMimeTypes,
viewId: View.of(context).viewId,
),
);
_updateSizeAndTransform();
//update IME position for Windows
_updateComposingRectIfNeeded();
//update IME position for Macos
_updateCaretRectIfNeeded();
/// Trap selection extends off end of document
if (_lastKnownRemoteTextEditingValue != null) {
if (_lastKnownRemoteTextEditingValue!.selection.end >
_lastKnownRemoteTextEditingValue!.text.length) {
_lastKnownRemoteTextEditingValue = _lastKnownRemoteTextEditingValue!
.copyWith(
selection: _lastKnownRemoteTextEditingValue!.selection
.copyWith(
extentOffset:
_lastKnownRemoteTextEditingValue!.text.length));
}
}
_textInputConnection!.setEditingState(_lastKnownRemoteTextEditingValue!);
}
_textInputConnection!.show();
}