Для моего будущего фитнес-приложения пользователь должен иметь возможность выбирать несколько дней между понедельником и воскресеньем, выбирать час и количество недель, для которых должно отображаться уведомление.Например: я выбираю четверг и пятницу, 2 часа дня и 6 недель.Поэтому я должен увидеть уведомление в четверг и пятницу в 2 часа дня в течение 6 недель.
Я работаю с плагином flutter_local_notifications 0.8.3, но, похоже, он не обладает необходимой мне функциональностью, еслиВы знаете любой другой подход к отображению уведомлений, как я написал выше, не стесняйтесь сообщить мне.
Редактировать:
код для запланированного уведомления, который я установил с помощью цикла for.Но это не совсем решение
Future<void> scheduleNotification(int id,{int, days,int hour, int minute, int second}) async {
var scheduledNotificationDateTime =
DateTime.now().add(Duration(days: days));
var vibrationPattern = Int64List(4);
vibrationPattern[0] = 0;
vibrationPattern[1] = 1000;
vibrationPattern[2] = 5000;
vibrationPattern[3] = 2000;
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'your other channel id',
'your other channel name',
'your other channel description',
icon: 'app_icon',
largeIcon: 'app_icon',
largeIconBitmapSource: BitmapSource.Drawable,
vibrationPattern: vibrationPattern,
enableLights: true,
color: const Color.fromARGB(255, 255, 0, 0),
ledColor: const Color.fromARGB(255, 255, 0, 0),
ledOnMs: 1000,
ledOffMs: 500);
var iOSPlatformChannelSpecifics =
IOSNotificationDetails(sound: "slow_spring_board.aiff");
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.schedule(
id,
'scheduled title',
'scheduled body',
scheduledNotificationDateTime,
platformChannelSpecifics);
}
Код для еженедельного уведомления
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'show weekly channel id',
'show weekly channel name',
'show weekly description');
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.showWeeklyAtDayAndTime(
0,
title,
'Weekly notification shown on Monday at approximately ${_toTwoDigitString(time.hour)}:${_toTwoDigitString(time.minute)}:${_toTwoDigitString(time.second)}',
Day.values[value],
time,
platformChannelSpecifics);
}
Данная проблема заключается в том, что я не знаю, как остановить еженедельное уведомление после x недель
Этот код взят из самого плагина, чтобы дать вам представление о том, как работает эта функция.Я могу указать день, время и интервал повторения, но не в течение какого периода времени уведомление должно быть активным.
/// Shows a notification on a daily interval at the specified time
Future<void> showWeeklyAtDayAndTime(int id, String title, String body,
Day day, Time notificationTime, NotificationDetails notificationDetails,
{String payload}) async {
_validateId(id);
var serializedPlatformSpecifics =
_retrievePlatformSpecificNotificationDetails(notificationDetails);
await _channel.invokeMethod('showWeeklyAtDayAndTime', <String, dynamic>{
'id': id,
'title': title,
'body': body,
'calledAt': DateTime.now().millisecondsSinceEpoch,
'repeatInterval': RepeatInterval.Weekly.index,
'repeatTime': notificationTime.toMap(),
'day': day.value,
'platformSpecifics': serializedPlatformSpecifics,
'payload': payload ?? ''
});
}