【问题标题】:Is there a way to set value for a TextField in Flutter without setting selection or removing the selection after setting value?有没有办法在 Flutter 中为 TextField 设置值,而无需设置选择或在设置值后删除选择?
【发布时间】:2021-01-05 00:33:17
【问题描述】:

当我们通过TextEditingController在Flutter中设置TextField如下:

textEditingController = TextEditingController();
textEditingController.text = "Some value.";

我们知道这里的text 设置器会将TextSelection 设置为输入的开头,如以下代码所示:

 set text(String newText) {
    value = value.copyWith(
      text: newText,
      selection: const TextSelection.collapsed(offset: -1),
      composing: TextRange.empty,
    );
  }

我的问题是我不想设置选择,因为在设置 TextField 之后我将焦点转移到另一个字段。

那么,有没有办法在不设置选择的情况下设置TextField 值,或者在设置值后删除设置的选择?

谢谢。

【问题讨论】:

  • textEditingController.value = ...
  • 我试过 textEditingController.text = "Some value.";但它没有在文本字段上显示光标
  • 是的,没有任何选择的 TextEditingValue 默认仍会将选择设置为输入的开头。
  • 难道不应该有一种简单的方法来以编程方式为 TextField 设置值,而无需选择/聚焦它吗?

标签: android flutter user-interface textfield


【解决方案1】:

textEditingController.value = TextEditingValue(text: "Some value.");

【讨论】:

  • 不。 TextEditingValue 构造函数默认将选择设置为输入的开头 - const TextEditingValue({ this.text = '', this.selection = const TextSelection.collapsed(offset: -1), this.composing = TextRange.empty, }) :断言(文本!= null),断言(选择!= null),断言(组成!= null);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多