如何检测用户已停止在TextField中键入?

时间:2019-06-30 08:39:22

标签: flutter dart delay textfield

我正在使用TextField函数下的onChanged

我正在调用代码,但是现在的问题是,每次输入或删除新单词时,代码都会执行。

我要寻找的是如何识别用户何时停止键入

意味着增加一些延迟或类似的东西。

我也尝试使用delay函数添加Future.delayed,但是该函数也被执行了n次。

TextField(
   controller: textController,
   onChanged: (val) {
            if (textController.text.length > 3) {
              Future.delayed(Duration(milliseconds: 450), () {
                 //code here
              });
            }
            setState(() {});
          },
 )

1 个答案:

答案 0 :(得分:0)

感谢@pskink

我能够实现我想要的功能。

将stream_transform包导入您的pubspec.yaml

stream_transform: ^0.0.19

import 'package:stream_transform/stream_transform.dart';

StreamController<String> streamController = StreamController();

@override
void initState() {
  streamController.stream
    .transform(debounce(Duration(milliseconds: 400)))
    .listen((s) => _validateValues());

  super.initState();
}

//function I am using to perform some logic
_validateValues() {
  if (textController.text.length > 3) {
     // code here
  }else{
     // some other code here
  }
}

TextField代码

TextField(
   controller: textController,
   onChanged: (val) {
        streamController.add(val);
     },
)