dart - 在 Flutter TextFormField 中管理事件

标签 dart listener textfield flutter

在 Flutter 项目中,我需要监听 TextFormField 中的输入文本并执行某些操作,尤其是当用户在此字段中放置一些字符(例如空格)或请求焦点时。当这种事件发生时,我需要修改字段的值。 我知道有一个属性称为 Controller ,但我不知道在这种情况下如何使用它。

提前谢谢你。

最佳答案

您可以指定 Controller 和焦点节点,然后向它们添加监听器以监视更改。

例如:

定义 Controller 和焦点节点

TextEditingController _controller = new TextEditingController();

FocusNode _textFocus = new FocusNode();

定义监听函数

void onChange(){
  String text = _controller.text;
  bool hasFocus = _textFocus.hasFocus;
  //do your text transforming
  _controller.text = newText;
  _controller.selection = new TextSelection(
                                baseOffset: newText.length, 
                                extentOffset: newText.length
                          );
}

initState

处添加监听器到 Controller 和焦点节点
// you can have different listner functions if you wish
_controller.addListener(onChange); 
_textFocus.addListener(onChange);

那么你就可以把它当做

new TextFormField(
  controller: _controller,
  focusNode: _textFocus,
)

希望有帮助!

关于dart - 在 Flutter TextFormField 中管理事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48870082/

相关文章:

flutter - flutter 中的气泡波纹动画

dart - 在 List 中使用 where 命令迭代其内容

flutter - 确定由 compute 执行的函数抛出的错误类型

java - 从回调列表中删除监听器的最优雅的方法是什么

swift - 我应该如何将文本设置到表格 View 上的文本字段中?

swift - 我只想接受我的文本字段中的 A 到 Z。并且不接受 swift 5 中的数字

textfield - LWUIT 文本域

java - 如何在 Flutter/Dart (Android) 中创建动态 Radio-Group

java - 按钮的 setOnClickListener 不起作用

jms - Spring DefaultMessageListenerContainer - 监听器不读取 Websphere MQ 上的消息