#flutter #dart #flutter-local-notification
#трепетать #дротик #флаттер-локальное-уведомление
Вопрос:
Я использую плагин flutter_local_notifications и пытаюсь заставить метод zonedSchedule работать для динамического повторяющегося ежедневного уведомления в определенное время, которое я указываю.
Конфигурация для плагина правильная, так как я могу показать уведомление и повторить уведомление с примером из их документации (через 5 секунд).:
await flutterLocalNotificationsPlugin.zonedSchedule( 0, 'scheduled title', 'scheduled body', tz.TZDateTime.now(tz.local).add(const Duration(seconds: 5)), const NotificationDetails( android: AndroidNotificationDetails( 'your channel id', 'your channel name', channelDescription: 'your channel description')), androidAllowWhileIdle: true, uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime);
То, что я пытаюсь сделать, — это запланировать повторение уведомления каждый день в определенное время. Я пытаюсь использовать эту логику:
tz.TZDateTime _nextInstanceOf(int time) { // print('wl here!!'); // print('time: '); // print(time); final now = tz.TZDateTime.now(tz.local); var scheduledDate = tz.TZDateTime(tz.local, now.year, now.month, now.day, time, 31, 0); // print("scheduledDate: "); // print(scheduledDate); if (scheduledDate.isBefore(now)) { // print('wl update!!'); scheduledDate = scheduledDate.add(const Duration(days: 1)); } return scheduledDate;
}
и
Futurelt;voidgt; _scheduleDailyNotification(int time, String msg) async { print('wl schedule notification!!'); await flutterLocalNotificationsPlugin.zonedSchedule( 0, 'Reminder:', msg, _nextInstanceOf(time), const NotificationDetails( android: AndroidNotificationDetails( 'daily notification channel id', 'daily notification channel name', 'daily notification description'), ), androidAllowWhileIdle: true, uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime, payload: 'wltry' );
}
Любая помощь будет признательна.