我正在构建一个简单的应用程序来打印当前TextFormField
的结果。例如,当文本改变时,它会打印新值。
我发现可以使用TextEditingController.addListener
来实现这一点,它可以侦听更改并执行函数。
因此,我将其全部封装在initState中,如下所示
@override
void initState() {
addressController.addListener(() {
print(addressController.text);
});
我的问题是,有时它会记录更改,即使没有任何更改:
这就是写一个单词然后把它删除的事情。
发布于 2020-10-02 23:41:39
如果你添加了listener,那么你应该在某个地方删除它,否则可能会出现TextEditingController有2个或更多listener的情况:
@override
void initState() {
addressController.addListener(_addressControllerListener);
super.initState()
}
void _addressControllerListener() {
print(addressController.text);
}
@override
void dispose() {
addressController.removeListener(_addressControllerListener);
super.dispose()
}
https://stackoverflow.com/questions/64171563
复制相似问题