|
|
|
|
|
|
using Unity.UIWidgets.async2; |
|
|
|
using Unity.UIWidgets.foundation; |
|
|
|
using Unity.UIWidgets.gestures; |
|
|
|
using Unity.UIWidgets.material; |
|
|
|
//using Unity.UIWidgets.material;
|
|
|
|
using Unity.UIWidgets.painting; |
|
|
|
using Unity.UIWidgets.rendering; |
|
|
|
using Unity.UIWidgets.scheduler2; |
|
|
|
|
|
|
D.assert(dragStartBehavior != null); |
|
|
|
D.assert(toolbarOptions != null); |
|
|
|
_strutStyle = strutStyle; |
|
|
|
keyboardType = keyboardType ?? (maxLines == 1 ? TextInputType.text : TextInputType.multiline), |
|
|
|
inputFormatters = inputFormatters ?? new List<TextInputFormatter>(); |
|
|
|
keyboardType = keyboardType ?? (maxLines == 1 ? TextInputType.text : TextInputType.multiline); |
|
|
|
? new List<TextInputFormatter> { |
|
|
|
BlacklistingTextInputFormatter.singleLineFormatter, |
|
|
|
...inputFormatters ?? new List<TextInputFormatter>.Empty(), |
|
|
|
? new List<TextInputFormatter>() { |
|
|
|
BlacklistingTextInputFormatter.singleLineFormatter, |
|
|
|
inputFormatters |
|
|
|
} |
|
|
|
: inputFormatters; |
|
|
|
this.readOnly = readOnly; |
|
|
|
|
|
|
this.textInputAction = textInputAction; |
|
|
|
this.textCapitalization = textCapitalization; |
|
|
|
this.cursorColor = cursorColor; |
|
|
|
this.backgroundCursorColor = backgroundCursorColor ?? Colors.grey; // TODO: remove ??
|
|
|
|
this.backgroundCursorColor = backgroundCursorColor ; // TODO: remove ??
|
|
|
|
this.maxLines = maxLines; |
|
|
|
this.minLines = minLines; |
|
|
|
this.expands = expands; |
|
|
|
|
|
|
oldWidget.controller.removeListener(_didChangeTextEditingValue); |
|
|
|
widget.controller.addListener(_didChangeTextEditingValue); |
|
|
|
_updateRemoteEditingValueIfNeeded(); |
|
|
|
_updateImePosIfNeed(); |
|
|
|
//_updateImePosIfNeed();
|
|
|
|
} |
|
|
|
|
|
|
|
if (widget.focusNode != oldWidget.focusNode) { |
|
|
|
|
|
|
|
|
|
|
_value = value; |
|
|
|
_updateRemoteEditingValueIfNeeded(); |
|
|
|
_updateImePosIfNeed(); |
|
|
|
//_updateImePosIfNeed();
|
|
|
|
} |
|
|
|
else { |
|
|
|
_value = value; |
|
|
|
|
|
|
|
|
|
|
void _didChangeTextEditingValue() { |
|
|
|
_updateRemoteEditingValueIfNeeded(); |
|
|
|
_updateImePosIfNeed(); |
|
|
|
//_updateImePosIfNeed();
|
|
|
|
_startOrStopCursorTimerIfNeeded(); |
|
|
|
_updateOrDisposeSelectionOverlayIfNeeded(); |
|
|
|
_textChangedSinceLastCaretUpdate = true; |
|
|
|
|
|
|
return TouchScreenKeyboard.isSupported && widget.unityTouchKeyboard; |
|
|
|
} |
|
|
|
|
|
|
|
Offset _getImePos() { |
|
|
|
/*Offset _getImePos() { |
|
|
|
if (_hasInputConnection && _textInputConnection.imeRequired()) { |
|
|
|
var localPos = renderEditable.getLocalRectForCaret(_value.selection.basePos).bottomLeft; |
|
|
|
return renderEditable.localToGlobal(localPos); |
|
|
|
|
|
|
} |
|
|
|
}*/ |
|
|
|
void _updateImePosIfNeed() { |
|
|
|
/*void _updateImePosIfNeed() { |
|
|
|
if (!_hasInputConnection || !_textInputConnection.imeRequired()) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
_textInputConnection.setIMEPos(_getImePos()); |
|
|
|
}); |
|
|
|
} |
|
|
|
}*/ |
|
|
|
} |
|
|
|
|
|
|
|
class _Editable : LeafRenderObjectWidget { |
|
|
|