fromICalString static method

ICalendar fromICalString(
  1. String icalString
)

Implementation

static ICalendar fromICalString(String icalString) {
  final lines = icalString.split('\n');
  List<Event>? events;
  String? prodId;
  List<String>? properties;
  for (var i = 0; i < lines.length; i++) {
    lines[i] = _removeNonPrintable(lines[i]);
    final line = lines[i];
    if (line.startsWith('BEGIN:VEVENT')) {
      final eventLines = <String>[];
      while (!lines[i].startsWith('END:VEVENT')) {
        eventLines.add(lines[i]);
        i++;
      }
      events ??= [];
      events.add(Event.fromICalStrings(eventLines));
    } else if (line.startsWith('BEGIN:VCALENDAR') ||
        line.startsWith('END:VCALENDAR') ||
        line.isEmpty) {
      continue;
    } else if (line.startsWith('PRODID:')) {
      prodId = line.substring(7);
    } else {
      properties ??= [];
      properties.add(line);
    }
  }

  return ICalendar(
    prodId: prodId,
    events: events,
    properties: properties,
  );
}