import 'package:firebase_database/firebase_database.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; class FirebaseApi { final FirebaseDatabase _database = FirebaseDatabase.instance; final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); FirebaseApi() { _initNotifications(); } Future init() async { await _monitorData(); } void _initNotifications() { const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('app_icon'); final InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid); _flutterLocalNotificationsPlugin.initialize(initializationSettings); } Future _monitorData() async { _database.reference().child('sensorData').onValue.listen((event) { final data = event.snapshot.value as Map; print("Data changed: $data"); // Debugging String flameStatus = data['flameStatus'].toString(); String smokeDetected = data['smokeDetected'].toString(); if (flameStatus == '2' && smokeDetected == '2') { print("Condition met, showing notification..."); // Debugging _showNotification('Peringatan!', 'Asap dan api terdeteksi di rumah ${data['nomorRumah']}'); } }); _database.reference().child('sensorData2').onValue.listen((event) { final data = event.snapshot.value as Map; print("Data2 changed: $data"); // Debugging String flameStatus = data['flameStatus'].toString(); String smokeDetected = data['smokeDetected'].toString(); if (flameStatus == '2' && smokeDetected == '2') { print("Condition met for data2, showing notification..."); // Debugging _showNotification('Peringatan!', 'Asap dan api terdeteksi di rumah ${data['nomorRumah']}'); } }); } void _showNotification(String title, String body) async { const AndroidNotificationDetails androidPlatformChannelSpecifics = AndroidNotificationDetails('default_channel_id', 'Default Channel', channelDescription: 'Default Channel Description', importance: Importance.max, priority: Priority.high, showWhen: false); const NotificationDetails platformChannelSpecifics = NotificationDetails(android: androidPlatformChannelSpecifics); await _flutterLocalNotificationsPlugin.show(0, title, body, platformChannelSpecifics, payload: 'item x'); print("Notification shown: $title - $body"); // Debugging } }