43 lines
1.4 KiB
Dart
43 lines
1.4 KiB
Dart
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
|
|
|
class NotificationService {
|
|
static final FlutterLocalNotificationsPlugin _plugin =
|
|
FlutterLocalNotificationsPlugin();
|
|
|
|
static const AndroidNotificationChannel _channel = AndroidNotificationChannel(
|
|
'air_quality_channel',
|
|
'Kualitas Udara',
|
|
description: 'Notifikasi sistem monitoring kualitas udara & AC otomatis',
|
|
importance: Importance.high,
|
|
playSound: true,
|
|
);
|
|
|
|
static Future<void> initialize() async {
|
|
const androidInit = AndroidInitializationSettings('@mipmap/ic_launcher');
|
|
const initSettings = InitializationSettings(android: androidInit);
|
|
await _plugin.initialize(initSettings);
|
|
|
|
final androidPlugin = _plugin.resolvePlatformSpecificImplementation<
|
|
AndroidFlutterLocalNotificationsPlugin>();
|
|
await androidPlugin?.createNotificationChannel(_channel);
|
|
await androidPlugin?.requestNotificationsPermission();
|
|
}
|
|
|
|
static Future<void> showNotification({
|
|
required String title,
|
|
required String body,
|
|
int id = 0,
|
|
}) async {
|
|
final androidDetails = AndroidNotificationDetails(
|
|
_channel.id,
|
|
_channel.name,
|
|
channelDescription: _channel.description,
|
|
importance: Importance.high,
|
|
priority: Priority.high,
|
|
icon: '@mipmap/ic_launcher',
|
|
);
|
|
final notifDetails = NotificationDetails(android: androidDetails);
|
|
await _plugin.show(id, title, body, notifDetails);
|
|
}
|
|
}
|