Flutter: debounce 避免高频率事件
Posted ajanuw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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'),
)
以上是关于Flutter: debounce 避免高频率事件的主要内容,如果未能解决你的问题,请参考以下文章
浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异[转]