import 'dart:async'; import 'package:flutter/material.dart'; import 'package:firebase_database/firebase_database.dart'; import '../models/ir_received_model.dart'; import '../services/firebase_service.dart'; class IrProvider extends ChangeNotifier { IrReceivedModel? _lastSignal; IrReceivedModel? get lastSignal => _lastSignal; StreamSubscription? _subscription; void startListening() { _subscription?.cancel(); // ESP32 terbaru: saveIrReceived menggunakan setJSON (flat object) bukan pushJSON // Gunakan onValue untuk mendengarkan perubahan flat object di /ir_received _subscription = FirebaseService.irReceivedRef.onValue.listen((event) { if (event.snapshot.value == null) return; try { final data = Map.from(event.snapshot.value as Map); _lastSignal = IrReceivedModel.fromMap(data); notifyListeners(); } catch (_) { // Abaikan error parsing } }); } @override void dispose() { _subscription?.cancel(); super.dispose(); } }