sync method
Запуск синхронизации с задержкой (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;
}
}