当前位置: 首页 > article >正文

flutter-防抖

在Flutter中实现输入框的防抖功能,通常是为了减少用户输入时触发的事件数量,特别是在进行网络请求时。防抖(Debounce)意味着在用户停止输入一段时间后才触发事件。以下是实现输入框防抖的一种方法:

1、使用Debounce:你可以创建一个Debounce类来控制事件的触发。

class Debounce {
  Timer? _timer;

  void setDuration(Duration duration, VoidCallback callback) {
    _timer?.cancel();
    _timer = Timer(duration, callback);
  }
}

 2、在Flutter的TextField控件中使用Debounce

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  final myController = TextEditingController();
  final debounce = Debounce();
  String _searchText = '';

  @override
  void dispose() {
    myController.dispose();
    debounce._timer?.cancel();
    super.dispose();
  }

  void _onSearch() {
    // 这里是你处理搜索逻辑的地方
    setState(() {
      _searchText = myController.text;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        TextField(
          controller: myController,
          onChanged: (value) {
            debounce.setDuration(Duration(milliseconds: 300), () {
              _onSearch();
            });
          },
          decoration: InputDecoration(
            hintText: 'Type something...',
          ),
        ),
        Text('You typed: $_searchText'),
      ],
    );
  }
}

http://www.kler.cn/a/377746.html

相关文章:

  • 深入理解 C++ 中的 std::vector
  • 揭秘自闭症症状的最新研究成果和应对策略
  • 页面上的内容的生成图片后,保存为word,并下载
  • Meta 上周宣布正式开源小型语言模型 MobileLLM 系列
  • 什么是多因素身份验证(MFA)的安全性?
  • `掌握Python-PPTX,让PPt制作变得轻而易举!`
  • 如何使用AdsPower指纹浏览器克服爬虫技术限制,安全高效进行爬虫!
  • 阿里国际2025届校园招聘 0826算法岗笔试
  • 【JavaEE初阶】深入理解TCP协议特性之延时应答,捎带应答,面向字节流以及异常处理
  • 修改 Docker 镜像默认存储位置的方法
  • 申请CNAS软件测试资质,如何选择测试工具最具性价比?
  • 三、Kafka集群
  • Vue常用的修饰符有哪些?
  • 基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
  • MATLAB FDATool工具箱入门教程
  • ubuntu20.04 加固方案-设置用户缺省UMASK
  • Vue 学习随笔系列十三 -- ElementUI 表格合并单元格
  • redis详细教程(5.AOP和RDB持久化)
  • 在 ubuntu20.04 安装 docker
  • 无人机拦截捕获/直接摧毁算法详解!
  • Dockerfile 增强新语法
  • A Consistent Dual-MRC Framework for Emotion-cause Pair Extraction——论文阅读笔记
  • 【JAVA】利用钉钉自定义机器人监控NACOS服务,实现实时下线通知
  • LabVIEW 离心泵机组故障诊断系统
  • 【elkb】创建用户和角色
  • 银行零售贵金属交易-小程序端业务