import 'dart:async'; import 'package:flutter/material.dart'; import 'package:firebase_database/firebase_database.dart'; import '../models/sensor_model.dart'; import '../services/firebase_service.dart'; class SensorProvider extends ChangeNotifier { SensorModel? _sensor; SensorModel? get sensor => _sensor; bool _isLoading = true; bool get isLoading => _isLoading; String? _errorMessage; String? get errorMessage => _errorMessage; StreamSubscription? _subscription; void startListening() { _subscription?.cancel(); _isLoading = true; _errorMessage = null; _subscription = FirebaseService.currentRef.onValue.listen((event) { if (event.snapshot.value == null) { _sensor = null; _isLoading = false; notifyListeners(); return; } try { final data = Map.from(event.snapshot.value as Map); _sensor = SensorModel.fromMap(data); _errorMessage = null; } catch (e) { _sensor = null; _errorMessage = 'Parsing Error: $e'; } _isLoading = false; notifyListeners(); }, onError: (error) { _sensor = null; _errorMessage = 'Firebase Error: $error'; _isLoading = false; notifyListeners(); }); } void stopListening() { _subscription?.cancel(); } @override void dispose() { _subscription?.cancel(); super.dispose(); } }