64 lines
2.3 KiB
Dart
64 lines
2.3 KiB
Dart
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
|
import 'package:timezone/timezone.dart' as tz;
|
|
|
|
class ScheduledNotificationConnector {
|
|
static Future<bool?> initialize() async {
|
|
const initializationSettingsAndroid =
|
|
AndroidInitializationSettings('@mipmap/ic_launcher');
|
|
const initializationSettingsDarwin =
|
|
DarwinInitializationSettings(
|
|
requestAlertPermission: false,
|
|
requestBadgePermission: false,
|
|
requestSoundPermission: false,
|
|
);
|
|
const initializationSettings = InitializationSettings(
|
|
android: initializationSettingsAndroid,
|
|
iOS: initializationSettingsDarwin,
|
|
macOS: initializationSettingsDarwin);
|
|
return FlutterLocalNotificationsPlugin().initialize(initializationSettings);
|
|
}
|
|
|
|
static Future<void> displayNotification(
|
|
int id, String title, String description) async {
|
|
final platformChannelSpecifics = NotificationDetails(
|
|
android: AndroidNotificationDetails(
|
|
'1', 'Benachrichtigungen', channelDescription: 'Benachrichtigungen'));
|
|
await FlutterLocalNotificationsPlugin().show(
|
|
id,
|
|
title,
|
|
description,
|
|
platformChannelSpecifics,
|
|
);
|
|
}
|
|
|
|
static Future<void> scheduleNotification(
|
|
int id,
|
|
DateTime scheduledNotificationDateTime,
|
|
String title,
|
|
String description) async {
|
|
if (scheduledNotificationDateTime.isBefore(DateTime.now())) {
|
|
return;
|
|
}
|
|
final platformChannelSpecifics = NotificationDetails(
|
|
android: AndroidNotificationDetails(
|
|
'1', 'Benachrichtigungen', channelDescription: 'Benachrichtigungen'));
|
|
await FlutterLocalNotificationsPlugin().zonedSchedule(
|
|
id.hashCode,
|
|
title,
|
|
description,
|
|
tz.TZDateTime.from(scheduledNotificationDateTime, tz.local),
|
|
platformChannelSpecifics,
|
|
androidScheduleMode: AndroidScheduleMode.exactAllowWhileIdle,
|
|
uiLocalNotificationDateInterpretation:
|
|
UILocalNotificationDateInterpretation.absoluteTime);
|
|
}
|
|
|
|
static Future<void> cancelScheduledNotification(String id) async {
|
|
await FlutterLocalNotificationsPlugin().cancel(id.hashCode);
|
|
}
|
|
|
|
static Future<void> cancelAllScheduledNotification() async {
|
|
await FlutterLocalNotificationsPlugin().cancelAll();
|
|
}
|
|
}
|