getRecurrenceInstancesForTimeFrame method

List<Event>? getRecurrenceInstancesForTimeFrame(
  1. DateTime periodStart,
  2. DateTime periodEnd
)

Implementation

List<Event>? getRecurrenceInstancesForTimeFrame(
    DateTime periodStart, DateTime periodEnd) {
  assert(periodStart.isBefore(periodEnd));

  DateTime defaultStartDate = start!;

  List<DateTime> recurrenceDates = recurrenceRule!.getRecurrencesForPeriod(
      periodStart, periodEnd, defaultStartDate, end!);
  if (xDates != null) {
    recurrenceDates = recurrenceDates.where((date) {
      return !xDates!.any((xDate) {
        return xDate.date.isAtSameMomentAs(date);
      });
    }).toList();
  }
  List<Event> events = [];
  for (DateTime recurrenceDate in recurrenceDates) {
    if (recurrenceDate.isAfter(periodEnd)) {
      break;
    }
    if (recurrenceDate.isAfter(periodStart) ||
        recurrenceDate == periodStart) {
      events.add(Event(
        uid: uid,
        summary: summary,
        description: description,
        attachments: attachments,
        attendees: attendees,
        organizer: organizer,
        stamp: stamp,
        created: created,
        lastModified: lastModified,
        startDate: recurrenceDate,
        endDate: recurrenceDate.add(end!.difference(start!)),
        sequence: sequence,
        transparency: transparency,
        status: status,
        timeZone: timeZone,
        recurrenceRule: recurrenceRule,
        xDates: xDates,
        location: location,
        recurrenceId: null,
        eventClass: eventClass,
        customProperties: customProperties,
        attachFiles: attachFiles,
      ));
    }
  }
  return events;
}