gpt4 book ai didi

Flutter:创建新行后文本字段光标不会下降

转载 作者:IT老高 更新时间:2023-10-28 12:42:08 25 4
gpt4 key购买 nike

我正在使用文本字段小部件进行文本编辑:

          new TextField(
controller: _controller,
maxLines: null,
),

问题:当我开始一个新行时,光标直到我开始输入文本才会下降。

截图如下: enter image description here

我的问题:如何让光标在创建后立即下移到新行?

最佳答案

根据:Github

/lib/src/rendering/editable.dart 中的 _paintCaret 方法必须修改,textField 中的 maxLines 参数必须为 null。它对我有用,希望成为临时解决方法。

/// MODIFIED:
void _paintCaret(Canvas canvas, Offset effectiveOffset) {
assert(_textLayoutLastWidth == constraints.maxWidth);
final Offset caretOffset = _textPainter.getOffsetForCaret(_selection.extent,
_caretPrototype);
final Paint paint = new Paint()..color = _cursorColor;
//final Rect caretRect = _caretPrototype.shift(caretOffset + effectiveOffset);

var textLength = 0;
var inputString = '';
if (text.children != null) {
for (var ts in text.children) {
textLength += ts.text.length;
inputString += ts.text;
}
} else if (text.text != null) {
textLength += text.text.length;
inputString += text.text;
}
final Rect tmpRect = _caretPrototype.shift(caretOffset + effectiveOffset);
Rect caretRect = new Rect.fromLTRB(tmpRect.left, _viewportExtent - 2.0 -
tmpRect.height, tmpRect.right, _viewportExtent - 2.0);
if ((tmpRect.top.abs() - caretRect.top.abs()).abs() > 10) {
caretRect = new Rect.fromLTWH(0.0, caretRect.top, caretRect.width,
caretRect.height);
}
if (_selection.extentOffset != textLength){
caretRect = tmpRect;
}
if (caretRect.left != 0 && inputString[_selection.extentOffset - 1] == '\n') {
_selection = new TextSelection.fromPosition(new TextPosition(offset:
_selection.extentOffset));
caretRect = _caretPrototype.shift(caretOffset + effectiveOffset);
}

canvas.drawRect(caretRect, paint);
if (caretRect != _lastCaretRect) {
_lastCaretRect = caretRect;
if (onCaretChanged != null)
onCaretChanged(caretRect);
}
}

关于Flutter:创建新行后文本字段光标不会下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50075427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com