在bloc中,debounceTime()、buffer()、throttle()方法都是用于处理流(Stream)数据的方法。
import 'package:rxdart/rxdart.dart';
final _controller = StreamController();
Stream get debouncedStream => _controller.stream.debounceTime(Duration(milliseconds: 500));
// 使用
debouncedStream.listen((data) {
print(data);
});
_controller.add('a');
_controller.add('b');
_controller.add('c');
import 'package:rxdart/rxdart.dart';
final _controller = StreamController();
Stream get bufferedStream => _controller.stream.bufferTime(Duration(seconds: 1));
// 使用
bufferedStream.listen((dataList) {
print(dataList);
});
_controller.add('a');
_controller.add('b');
_controller.add('c');
// 等待1秒钟
await Future.delayed(Duration(seconds: 1));
_controller.add('d');
_controller.add('e');
_controller.add('f');
// 等待1秒钟
await Future.delayed(Duration(seconds: 1));
上述代码将在每个1秒钟时将发生的事件放在一个List中,返回一个完整的列表。
import 'package:rxdart/rxdart.dart';
final _controller = StreamController();
Stream get throttledStream => _controller.stream.throttleTime(Duration(milliseconds: 500));
// 使用
throttledStream.listen((data)