我有一个TextField,它的控制器带有一个用于更改的侦听器。像这样:
final TextEditingController _oneController = TextEditingController();
@override
void initState() {
super.initState();
_oneController.addListener(_listener);
}
TextField(
controller: _oneController,
),
_listener
是一个函数,它将调度一个事件,该事件表明我的表单已被编辑。
这可以正常工作,但是只要您不关注字段中的文本,只要您专注于TextField,它就会触发此侦听器运行。
有没有一种方法可以阻止TextField进入焦点时调用我的侦听器?当我的TextField中的文本没有更改时,我不希望调用我的侦听器。
答案 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.
}
}