• Flutter: debounce 避免高频率事件


    函数

    import 'dart:async';
    
    Function debounce(Function fn, [int t = 30]) {
      Timer _debounce;
      return () {
        // 还在时间之内,抛弃上一次
        if (_debounce?.isActive ?? false) _debounce.cancel();
    
        _debounce = Timer(Duration(milliseconds: t), () {
          fn();
        });
      };
    }
    
    RaisedButton(
          onPressed: debounce(() {
              print(1);
         }, 3000),
        child: Text('Test'),
    )
    

    rxdart

    import 'package:rxdart/rxdart.dart';
    
      final _counterSubject = BehaviorSubject<int>();
    
      @override
      void initState() {
        super.initState();
        _counterSubject.debounceTime(Duration(seconds: 2)).listen((int i) {
          print(i);
        });
      }
    
    RaisedButton(
      onPressed: () {
        _counterSubject.add(1);
      },
      child: Text('Test'),
    )
    
  • 相关阅读:
    电感
    电容
    电阻
    函数异常规格说明
    异常处理深度解析
    自定义内存管理
    单例类模板
    数组类模板
    数组类模板
    类模板深度剖析
  • 原文地址:https://www.cnblogs.com/ajanuw/p/11148708.html
Copyright © 2020-2023  润新知