import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:timezone/timezone.dart' as tz; class ScheduledNotificationConnector { static Future 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 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 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 cancelScheduledNotification(String id) async { await FlutterLocalNotificationsPlugin().cancel(id.hashCode); } static Future cancelAllScheduledNotification() async { await FlutterLocalNotificationsPlugin().cancelAll(); } }