flutter - 完成文本输入后 Flutter TextFormField 调用值更改方法
问题描述
在我的屏幕上,有搜索功能按照逻辑工作正常,但问题是我想在采场输入后运行我的搜索功能?那么在TextFormField
theresonChanged
方法中,我们怎样才能实现呢?我尝试了很多方法,例如比较DateTime
,但无法实现。
~ PS:onEditingComplete
在我的情况下方法很完美,但问题是,要调用这个方法我必须点击返回按钮,而不点击返回按钮是否可能?
解决方案
我建议创建一个去抖动器,像这样。
class Debouncer {
final int milliseconds;
VoidCallback action;
Timer _timer;
Debouncer({this.milliseconds});
run(VoidCallback action) {
if (null != _timer) {
_timer.cancel();
}
_timer = Timer(Duration(milliseconds: milliseconds), action);
}
}
然后以您想要的“停止键入后”时间启动对象。
final _debouncer = Debouncer(milliseconds: 1000);
并在您的 onChanged 方法中使用它。
onChanged: (string) {
_debouncer.run(() {
//Perform your search
}
);
推荐阅读
- java - 将jar文件添加到eclipse时出现问题
- reactjs - 如何将字段添加到 Firebase 身份验证?
- python - 如何检查数据框(熊猫)中是否存在所有可能的列组合?
- java - 在 Android 11 中创建和共享 pdf 到 Gmail 应用
- javascript - 如何使 vue 文件从外部 js 文件监听(mitt 的emitter.on)到emitter.emit 事件?
- javascript - 我可以加载一个脚本,然后创建一个指向该加载脚本的变量吗?
- r - 根据实际未发生更新但保留第一个实例的日期和时间删除行
- python - 尝试在不使用全局变量的情况下让代码通过并保留统计信息
- forms - 在 Symfony 5 中将数据从表单渲染到另一个视图
- android - 如何在android Fragment中保存ScrollView的滚动位置?