To show notification I an using flutter_local_notifications package.
I am getting notification, but schedule notification is not working.
Here is my code
initState()
@override
void initState() {
// TODO: implement initState
super.initState();
notificationmanager.initialize();
}
initialize()
Future<void> initialize() async {
// Инициализация временных зон
tz.initializeTimeZones();
// Инициализация плагина локальных уведомлений
flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
// Конфигурация плагина локальных уведомлений
var initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettingsIOS = DarwinInitializationSettings();
var initializationSettings = InitializationSettings(
android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
}
scheduleNotification()
// Метод для запланирования уведомления на определенное время
Future<void> scheduleNotification(DateTime scheduledDate) async {
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'channel_id', // id канала
'channel_name', // имя канала
channelDescription: 'channel_description', // описание канала
importance: Importance.max,
priority: Priority.high,
);
var iOSPlatformChannelSpecifics = DarwinNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
android: androidPlatformChannelSpecifics,
iOS: iOSPlatformChannelSpecifics,
);
// Создаем экземпляр объекта TZDateTime для передачи времени уведомления в нужном формате
var scheduledDateTime = tz.TZDateTime.from(scheduledDate, tz.local);
// Запланировать уведомление на определенное время
await flutterLocalNotificationsPlugin.zonedSchedule(
1, // ID уведомления
'Напоминание', // Заголовок уведомления
'Пора выполнить задачу!', // Текст уведомления
scheduledDateTime, // Время уведомления
platformChannelSpecifics,
androidScheduleMode: AndroidScheduleMode.exactAllowWhileIdle,
// androidAllowWhileIdle:
// true, // Разрешить отправку уведомления, когда устройство находится в режиме Doze
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
// matchDateTimeComponents:
// DateTimeComponents.time, // Совпадение только по времени
);
}
and calling method notificationmanager
notificationmanager.scheduleNotification(
DateTime.now().add(Duration(seconds: 5)));