flush method

Future<void> flush()

把当前队列里的所有 event 发出去。串行化:同一时刻只有一个 在飞的 flush,避免重复发送。

Implementation

Future<void> flush() async {
  if (_inFlight != null) {
    await _inFlight;
    // 等上一次完成后,如果队列里还有新的(在那期间 enqueue 的),递归
    // flush 一次。但只递归一层,避免无限。
    if (_queue.isNotEmpty) return _doFlushOnce();
    return;
  }
  return _doFlushOnce();
}