pedido_sync.dart 897 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import '../../viewmodels/viewmodels.dart';
  4. class PedidoSync {
  5. static final PedidoSync _instance = PedidoSync._internal();
  6. Timer? _syncTimer;
  7. factory PedidoSync() {
  8. return _instance;
  9. }
  10. PedidoSync._internal();
  11. void startSync(PedidoViewModel pedidoViewModel) {
  12. if (_syncTimer != null && _syncTimer!.isActive) return;
  13. _syncTimer = Timer.periodic(Duration(seconds: 5), (timer) async {
  14. bool hasMoreToSync = await pedidoViewModel.sincronizarPedidos();
  15. if (!hasMoreToSync) {
  16. timer.cancel();
  17. _syncTimer = null;
  18. debugPrint(
  19. 'Sincronización completa, no hay más pedidos por sincronizar.');
  20. }
  21. });
  22. }
  23. void stopSync() {
  24. _syncTimer?.cancel();
  25. _syncTimer = null;
  26. }
  27. bool isSyncing() {
  28. return _syncTimer != null && _syncTimer!.isActive;
  29. }
  30. }