sync method

Future<void> sync({
  1. Duration debounce = const Duration(milliseconds: 300),
})

Запуск синхронизации с задержкой (debounce) и защитой от параллельных вызовов

Implementation

Future<void> sync({Duration debounce = const Duration(milliseconds: 300)}) async {
  if (_isSyncing) {
    _pendingSync ??= Completer<void>();
    await _pendingSync!.future;
    return;
  }
  _isSyncing = true;
  await Future.delayed(debounce);
  try {
    await _doSync();
  } finally {
    _isSyncing = false;
    _pendingSync?.complete();
    _pendingSync = null;
  }
}