search - 有没有办法在用户停止输入后发送请求?
问题描述
- 我正在寻找一种在用户停止输入 X 秒后发送 API 请求的方法。
- 我发送请求的方式是通过 onTextChanged 回调,但是,它会在每次按键时发送一个请求
- 我已经看到了在 React 中使用超时来做到这一点的方法,但是,我对颤动相对较新,所以任何帮助将不胜感激
解决方案
您可以使用以下代码来执行此操作:
import 'package:flutter/material.dart';
import 'dart:async';
class Test extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _TestState();
}
}
class _TestState extends State<StatefulWidget> {
Timer searchOnStoppedTyping;
_onChangeHandler(value ) {
const duration = Duration(milliseconds:800); // set the duration that you want call search() after that.
if (searchOnStoppedTyping != null) {
setState(() => searchOnStoppedTyping.cancel()); // clear timer
}
setState(() => searchOnStoppedTyping = new Timer(duration, () => search(value)));
}
search(value) {
print('hello world from search . the value is $value');
}
@override
Widget build(BuildContext context) {
return TextField(
onChanged: _onChangeHandler,
decoration: InputDecoration(
hintText: 'Search ....'
),
);
}
}
推荐阅读
- java - 解析文本和编译规则,应用于验证输入 XML 文件
- mysql - 尝试通过触发器(插入时)插入多行会导致错误
- r - 将图例中的颜色顺序与堆积条形图中的颜色顺序对应起来
- mach-o - 可以移动 Mach-O 可执行文件的 __LINKEDIT 段吗
- c# - 下载程序时的动画
- jquery - slideToggle 如何与引导程序一起使用?
- java - AlarmManager 在 Android 8.1.0 中不起作用
- javascript - CSS 和 JS 在 localhost 上工作,但不在 Heroku Webserver 上
- html - 无法阻止输入在 Chrome 中显示自动填充详细信息
- java - 验证 pom.xml 中指定的工件依赖项的使用