当聚焦TextField时会触发Flutter TextEditingController侦听器

时间:2019-06-18 02:31:19

标签: flutter textfield

我有一个TextField,它的控制器带有一个用于更改的侦听器。像这样:

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

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

这可以正常工作,但是只要您不关注字段中的文本,只要您专注于TextField,它就会触发此侦听器运行。

有没有一种方法可以阻止TextField进入焦点时调用我的侦听器?当我的TextField中的文本没有更改时,我不希望调用我的侦听器。

1 个答案:

答案 0 :(得分:1)

将先前键入的文本存储在名为prev的变量中。 (最初是prev =“”)。 每次调用_listener时,请检查_oneController.text == prev,如果两者相同,则无需调用该函数。 如果上一个与文本不同,则执行_listener函数。

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