rest - Flutter:搜索栏-延迟后向服务器发送请求

标签 rest search flutter searchbar

我有一个搜索栏,它会在用户输入内容 1 秒后执行休息调用。但是,如果用户输入更多字母,例如“asd”,实际上它将执行 3 个请求,一个用于“a”,一个用于“s”,一个用于“d”。有没有一种方法可以在用户停止时只进行一次调用?

代码是:

appBarTitle = new TextField(
    controller: _filterController,
    decoration: new InputDecoration(
        hintText: 'Search...'
    )
);
_filterController.addListener(() {
  if (_filterController.text.isEmpty) {
  } else {
    Future.delayed(Duration(seconds: 1), () {
      userWrites(_filterController.text);
    });
  }
});

userWrites(String filterName){
  try {
//TODO: call
  }catch(_) {
 }   

}

最佳答案

不知道它是否仍然有用,但我使用 Timer 类解决了它。

Timer timer;
appBarTitle = new TextField(
    controller: _filterController,
    decoration: new InputDecoration(
        hintText: 'Search...'
    )
);
_filterController.addListener(() {
  if (_filterController.text.isEmpty) {
  } else {
    if(timer != null){
      timer.cancel();
      timer = null;    
    }
    timer = Timer(Duration(seconds: 1), userWrites);
  }
});

userWrites(){
  try {
    print(_filterController.text);
    //TODO: call
  }catch(_) {
 }   

}

关于rest - Flutter:搜索栏-延迟后向服务器发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744051/

相关文章:

没有 SSL 的 WCF 身份验证

gridview - 根据flutter中的动态内容调整GridView子高度

php - 刷新 token 上的 Firebase REST API INVALID_ARGUMENT

java - Java 中的 Swagger + Jersey 数字枚举

.net - 如何搜索允许标记的数据库列?

algorithm - 解决这个问题的更好方法是什么?

algorithm - 将路标添加到 A* 图搜索

html - Flutter-呈现HTML无序列表

flutter - (Flutter) 字符串列表的自定义生成器

android - 为 Android 应用程序和 Django 数据库制作 RESTful http 服务?