import 'dart:async'; import 'package:flutter/material.dart'; class DangerStatusManager extends ChangeNotifier { final Map _flameStatus = {}; final Map _smokeStatus = {}; final Map _flameBlinking = {}; final Map _smokeBlinking = {}; final Map _flameTimers = {}; final Map _smokeTimers = {}; bool isFlameDanger(String deviceId) => _flameStatus[deviceId] ?? false; bool isSmokeDanger(String deviceId) => _smokeStatus[deviceId] ?? false; bool isFlameBlinking(String deviceId) => _flameBlinking[deviceId] ?? false; bool isSmokeBlinking(String deviceId) => _smokeBlinking[deviceId] ?? false; void setFlameStatus(String deviceId, bool status) { if (status) { _startFlameTimer(deviceId); _flameBlinking[deviceId] = true; } else { _flameStatus[deviceId] = false; _flameBlinking[deviceId] = false; _flameTimers[deviceId]?.cancel(); notifyListeners(); } } void setSmokeStatus(String deviceId, bool status) { if (status) { _startSmokeTimer(deviceId); _smokeBlinking[deviceId] = true; } else { _smokeTimers[deviceId]?.cancel(); _smokeTimers[deviceId] = Timer(Duration(minutes: 5), () { _smokeStatus[deviceId] = false; _smokeBlinking[deviceId] = false; notifyListeners(); }); } _smokeStatus[deviceId] = status; notifyListeners(); } void _startFlameTimer(String deviceId) { _flameStatus[deviceId] = true; _flameTimers[deviceId]?.cancel(); _flameTimers[deviceId] = Timer(Duration(minutes: 5), () { _flameStatus[deviceId] = false; _flameBlinking[deviceId] = false; notifyListeners(); }); notifyListeners(); } void _startSmokeTimer(String deviceId) { _smokeStatus[deviceId] = true; _smokeTimers[deviceId]?.cancel(); _smokeTimers[deviceId] = Timer(Duration(minutes: 5), () { _smokeStatus[deviceId] = false; _smokeBlinking[deviceId] = false; notifyListeners(); }); notifyListeners(); } void resetStatus(String deviceId) { _flameStatus[deviceId] = false; _smokeStatus[deviceId] = false; _flameBlinking[deviceId] = false; _smokeBlinking[deviceId] = false; _flameTimers[deviceId]?.cancel(); _smokeTimers[deviceId]?.cancel(); notifyListeners(); } }