schedule static method

Future<void> schedule({
  1. required int id,
  2. required String androidChannelId,
  3. required String androidChannelDescription,
  4. required DateTime dateTime,
  5. required String title,
  6. required String content,
  7. String androidResourceIcon = androidResourceName,
  8. InitializationSettings? settings,
  9. VoidCallback? onSelectNotification,
})

Implementation

static Future<void> schedule({
  required int id,
  required String androidChannelId,
  required String androidChannelDescription,
  required DateTime dateTime,
  required String title,
  required String content,
  String androidResourceIcon = androidResourceName,
  InitializationSettings? settings,
  VoidCallback? onSelectNotification,
}) async {
  final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
      FlutterLocalNotificationsPlugin();
  final NotificationDetails platformChannelSpecifics = NotificationDetails(
    android: AndroidNotificationDetails(
      androidChannelId,
      androidChannelDescription,
      channelDescription: androidChannelDescription,
      icon: androidResourceIcon,
      importance: Importance.max,
      enableVibration: false,
      styleInformation: BigTextStyleInformation(content),
    ),
    iOS: const IOSNotificationDetails(presentAlert: true),
    macOS: const MacOSNotificationDetails(presentAlert: true),
  );
  tz.initializeTimeZones();
  final tz.TZDateTime scheduleDateTime = tz.TZDateTime.from(
    dateTime,
    tz.local,
  );
  flutterLocalNotificationsPlugin.initialize(
    settings ?? NotificationUtils.settings,
    onSelectNotification: (String? text) async =>
        onSelectNotification?.call(),
  );
  await flutterLocalNotificationsPlugin.zonedSchedule(
    id,
    title,
    content,
    scheduleDateTime,
    platformChannelSpecifics,
    payload: content,
    androidAllowWhileIdle: true,
    uiLocalNotificationDateInterpretation:
        UILocalNotificationDateInterpretation.absoluteTime,
  );
}