buffer method

void buffer(
  1. Duration duration,
  2. void callback(
    1. List<T> values
    )
)

Buffer value changes for specified duration

Implementation

void buffer(Duration duration, void Function(List<T> values) callback) {
  RxTimingUtils._register(this);
  final buffer = <T>[];
  Timer? timer;

  void listener() {
    buffer.add(value);
    timer?.cancel();
    timer = Timer(duration, () {
      if (buffer.isNotEmpty) {
        callback(List.from(buffer));
        buffer.clear();
      }
    });

    // Track the timer for cleanup
    if (timer != null) {
      RxTimingUtils._getTimingData(this)?.addTimer(timer!);
    }
  }

  addListener(listener);
}