initial
This commit is contained in:
63
lib/todo/scheduled_notification.dart
Normal file
63
lib/todo/scheduled_notification.dart
Normal file
@@ -0,0 +1,63 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user