next method
Computes the delay to use for a resize event observed at now.
Implementation
ResizeCoalescerState next(ResizeCoalescerState state, DateTime now) {
final last = state.lastEventAt;
if (last == null) {
return ResizeCoalescerState(
lastEventAt: now,
burstCount: 0,
delay: Duration.zero,
);
}
final delta = now.difference(last);
if (delta <= const Duration(milliseconds: 20)) {
return ResizeCoalescerState(
lastEventAt: now,
burstCount: state.burstCount + 1,
delay: const Duration(milliseconds: 30),
);
}
if (delta <= const Duration(milliseconds: 80)) {
return ResizeCoalescerState(
lastEventAt: now,
burstCount: 1,
delay: const Duration(milliseconds: 8),
);
}
return ResizeCoalescerState(
lastEventAt: now,
burstCount: 0,
delay: Duration.zero,
);
}