TKK_E32210095/lib/application.dart

87 lines
2.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_database/firebase_database.dart';
import 'package:workmanager/workmanager.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:ta_kebakaran_aplikasi/pages/home_satpam.dart';
Future<void> firebaseDatabaseCheck() async {
final databaseReference = FirebaseDatabase.instance.ref();
final DatabaseEvent event = await databaseReference.once();
// Assuming your data structure
final Map<dynamic, dynamic> data = event.snapshot.value as Map<dynamic, dynamic>;
final flameValue = data['flameValue'];
final smokeDetected = data['smokeDetected'];
if (flameValue == 2 || smokeDetected == 2) {
_showNotification('Peringatan', 'Ada indikasi kebakaran');
}
}
void callbackDispatcher() {
Workmanager().executeTask((task, inputData) {
firebaseDatabaseCheck();
return Future.value(true);
});
}
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
void _showNotification(String title, String body) async {
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails('your_channel_id', 'your_channel_name',
channelDescription: 'your_channel_description',
importance: Importance.max,
priority: Priority.high,
ticker: 'ticker');
const NotificationDetails platformChannelSpecifics =
NotificationDetails(android: androidPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0,
title,
body,
platformChannelSpecifics,
payload: 'item x',
);
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
final initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/ic_launcher');
final initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
);
flutterLocalNotificationsPlugin.initialize(initializationSettings);
Workmanager().initialize(
callbackDispatcher,
isInDebugMode: true, // True untuk pengembangan, false untuk produksi
);
Workmanager().registerPeriodicTask(
"1",
"simplePeriodicTask",
frequency: Duration(minutes: 15),
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomeSatpam(),
);
}
}