bufferTime method

ReadableBufferedBeacon<T> bufferTime(
  1. Duration duration, {
  2. String? name,
})

Returns a BufferedTimeBeacon that wraps this Beacon.

final count = Beacon.writable(10);
final bufferedBeacon = count.bufferTime(duration: k10ms);
await Future.delayed(k1ms);

count.set(20);

expect(count.value, equals(20));
expect(bufferedBeacon.value, equals([]));
expect(bufferedBeacon.currentBuffer.value, equals([10,20]));

await Future.delayed(k10ms);

expect(bufferedBeacon.value, equals([20]));

See: Beacon.bufferedTime for more details.

Implementation

ReadableBufferedBeacon<T> bufferTime(
  Duration duration, {
  String? name,
}) {
  assert(
    this is! BufferedBaseBeacon,
    '''
Chaining of buffered beacons is not supported!
Buffered beacons has to be the last in the chain.

Good: someBeacon.filter().buffer(10);

Bad: someBeacon.buffer(10).filter();

If you absolutely need this functionality, it has to be done manually with .wrap.
eg:
final beacon = Beacon.bufferedCount<T>(count).wrap(someBufferedBeacon)
''',
  );

  final beacon = Beacon.bufferedTime<T>(
    duration: duration,
    name: name,
  );

  _wrapThis(beacon);

  return beacon;
}