首页 > 解决方案 > 完成文本输入后 Flutter TextFormField 调用值更改方法

问题描述

在我的屏幕上,有搜索功能按照逻辑工作正常,但问题是我想在采场输入后运行我的搜索功能?那么在TextFormFieldtheresonChanged方法中,我们怎样才能实现呢?我尝试了很多方法,例如比较DateTime,但无法实现。

~ PS:onEditingComplete在我的情况下方法很完美,但问题是,要调用这个方法我必须点击返回按钮,而不点击返回按钮是否可能?

标签: flutterdart

解决方案


我建议创建一个去抖动器,像这样。

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
  }
);

推荐阅读