main function

Future<void> main()

Implementation

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Configuración para ignorar certificados SSL
  bool ignoreSSL = true; // Cambia esta variable según sea necesario

  if (ignoreSSL) {
    HttpOverrides.global = MyHttpOverrides();
  }

  // Inicializar el sistema de notificaciones
  await _initializeNotifications();
  await Firebase.initializeApp();
  await loadTheme(); // Cargar el tema guardado

  // Instancias de servicios que sincronizan pendientes
  final MonitoreoService _monitoreoService = MonitoreoService();
  final CoordenadasService _coordenadasService = CoordenadasService();
  final UmsService _umsService = UmsService();
  final UmsCoordenadasService _umsCoordService = UmsCoordenadasService();
  final SolicitudService _solicitudService = SolicitudService();
  final SpeciesService _speciesService = SpeciesService();
  final DetalleEspecieService _detalleService = DetalleEspecieService();

  final PalmaService _palmaService = PalmaService();
  final ArbolService _arbolService = ArbolService();

  // <-- AÑADIDO: instancia de AddIndividuoService
  final AddIndividuoService _addIndividuoService = AddIndividuoService();

  // Lógica para manejar cambios de conectividad
  Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
    if (result != ConnectivityResult.none) {
      // Monitoreos pendientes
      _monitoreoService.checkAndSyncPendingMonitoreos();

      // Coordenadas de predios pendientes
      _coordenadasService.checkAndSyncPendingCoordenadas();

      // UMS pendientes
      _umsService.checkAndSyncPendingUms();

      // Coordenadas UMS pendientes
      _umsCoordService.checkAndSyncPendingUmsCoordenadas();

      // Solicitudes pendientes
      _solicitudService.checkAndSyncPendingSolicitudes();

      // Especies pendientes
      _speciesService.checkAndSyncPending();

      // Detalle de especie pendientes
      _detalleService.checkAndSyncPendingDetalles();

      // Palmas pendientes
      _palmaService.checkAndSyncPendingPalmas();

      // Árboles pendientes
      _arbolService.checkAndSyncPendingArboles();

      // <-- AÑADIDO: sincronizar individuos pendientes
      _addIndividuoService.checkAndSyncPending();
    }
  });

  runApp(MyApp(
    monitoreoService: _monitoreoService,
    coordenadasService: _coordenadasService,
    umsService: _umsService,
    umsCoordService: _umsCoordService,
    solicitudService: _solicitudService,
    speciesService: _speciesService,
    detalleService: _detalleService,
    palmaService: _palmaService,
    arbolService: _arbolService,
    addIndividuoService: _addIndividuoService, // <-- AÑADIDO al constructor
  ));
}