聚焦 TextField 时触发 Flutter TextEditingController 侦听器

ali*_*ter 6 textfield flutter

我有一个 TextField,它有一个控制器,它有一个更改监听器。像这样:

final TextEditingController _oneController = TextEditingController();
Run Code Online (Sandbox Code Playgroud)
  @override
  void initState() {
    super.initState();
    _oneController.addListener(_listener);
  }
Run Code Online (Sandbox Code Playgroud)
TextField(
  controller: _oneController,
),
Run Code Online (Sandbox Code Playgroud)

哪里_listener是一个函数,它将调度我的表单已被编辑的事件。

这工作正常,但只要您关注 TextField,它就会触发此侦听器运行,即使未对字段中的文本进行任何更改。

当 TextField 进入焦点时,有没有办法阻止我的听众被调用?当我的 TextField 中的文本没有更改时,我不希望我的侦听器被调用。

小智 6

将先前键入的文本存储在名为 prev 的变量中。(最初是 prev = "")。每次 _listener 被调用时,检查 _oneController.text == prev 是否​​相同,如果它们相同,则无需调用该函数。如果 prev 与文本不同,则执行函数 _listener。

_listener(){
    if(prev != _oneController.text){
         prev = _oneController.text;
         //your rest of the code, whatever u wanna do.
     }
}
Run Code Online (Sandbox Code Playgroud)