![b0f55a9d3f3d248bbf8f5ac4e113e6ef.png](https://i-blog.csdnimg.cn/blog_migrate/44120e68734a1d19a8adecd410d919bf.jpeg)
在某些应用场景里,我们可能需要在每次文本框的文本内容变化时都调用回调函数。例如,当构建一个有自动填充功能的搜索页面时,我们希望根据用户输入的内容来更新返回的结果。
那么如何每次在文本内容改变时调用回调函数呢?在 Flutter 中,我们提供了两种选择:
- 给
TextField
绑定onChanged()
回调 - 使用
TextEditingController
1. 给 TextField 绑定 onChanged 回调
最简单的方法是给 TextField
绑定 onChanged
回调。每当文本内容改变时,回调函数会被触发。但这种方法有一个缺点,它不适用于 TextFormField
组件。
在下面的示例中,每次 text 的值改变,会在控制台中打印出当前文本框的值。
TextField(
onChanged: (text) {
print("First text field: $text");
},
);
2. 使用 TextEditingController
另外一种更强大但是更复杂的方法是绑定