TextField 问题中的 TextSelection

Posted

技术标签:

【中文标题】TextField 问题中的 TextSelection【英文标题】:TextSelection in a TextField issue 【发布时间】:2019-02-01 19:20:09 【问题描述】:

在使用TextSelection() 选择TextField 中的整个文本后,它确实选择了整个文本,但是在按下键盘上的一个键后,它开始将按下的字母/数字添加到文本的开头而不是删除旧的并用新输入的字母/数字替换它。

这是预期的行为吗?如果是这样,有什么方法可以通过编程方式选择文本,然后在按下键盘上的键时替换它?

这就是我选择文本的方式:

manualEditorNode.addListener(() 
  if (manualEditorNode.hasFocus) 
    manualInputController.selection = TextSelection(
        baseOffset: 0, extentOffset: manualInputController.text.length);
  
);

【问题讨论】:

Id 创建错误报告。如果您首先检查您是否仍然可以在master 频道中重现,那就太好了。 @GünterZöchbauer 我目前在master 频道。我应该试试dev 频道吗? 不,如果它在master 中不起作用,只需在flutter doctor -v 的输出中创建一个问题 【参考方案1】:

以下内容适用于我的程序。也许你可以试试这样的东西?

var cursorPos = textInputController.selection;
setState(() 
  textInputController.text = newInput;

  if (cursorPos.start > newInput.length) 
    cursorPos = new TextSelection.fromPosition(
        new TextPosition(offset: newInput.length));
  
  textInputController.selection = cursorPos;
);

【讨论】:

以上是关于TextField 问题中的 TextSelection的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 TextField 中的字段大小?

在 Flutter 中导航后无法关注新页面中的 TextField

在 Flutter 中的 TextField 下显示错误

从 Swift 中的 textField 获取 Webview URL

修复 React 中的 TextField 对齐

从 CoreData 中的 TextField 保存和获取