Articles in this section
Category / Section

How to get the recurrence properties from RRule in the Flutter Calendar

1 min read

In the Flutter Event Calendar, you can get the recurrence rule properties by using the parseRRule method.

Inside the state initialize the default values for calendar.

String _recurrenceRule = 'FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,WE;UNTIL=20210810';
DateTime _startTime = DateTime.now();

Using onPressed callback of the RaisedButton, show the alert dialog and get the recurrence properties of the recurrence rule.

child: Column(
  children: [
    Center(
      child: new RaisedButton(
        onPressed: _showDialog,
        child: new Text("Get recurrence rule"),
      ),
    ),
    Expanded(
        child: SfCalendar(
          view: CalendarView.month,
          dataSource: _getCalendarDataSource(),
        ))
  ],
),
 
_AppointmentDataSource _getCalendarDataSource() {
  List<Appointment> appointments = <Appointment>[];
  appointments.add(Appointment(
      startTime: _startTime,
      endTime: _startTime.add(Duration(hours: 1)),
      subject: 'Meeting',
      color: Colors.blue,
      recurrenceRule: _recurrenceRule));
 
  return _AppointmentDataSource(appointments);
}

In this alert dialog get the recurrence properties by using parseRRule method of the calendar and show the recurrence properties in alert window.

_showDialog() async {
  RecurrenceProperties _recurrenceProperties =
  SfCalendar.parseRRule(_recurrenceRule, _startTime);
 
  await showDialog(
    context: context,
    // ignore: deprecated_member_use
 
     builder: (BuildContext context) {return AlertDialog(
       contentPadding: const EdgeInsets.all(16.0),
       content: Column(
         crossAxisAlignment: CrossAxisAlignment.start,
         children: [
           Text(
             'Type:' + _recurrenceProperties.recurrenceType.toString(),
           ),
           Text(
             'Count:' + _recurrenceProperties.recurrenceCount.toString(),
           ),
           Text(
             'StartDate:' + _recurrenceProperties.startDate.toString(),
           ),
           Text(
             'EndDate:' + _recurrenceProperties.endDate.toString(),
           ),
           Text(
             'Interval: ' + _recurrenceProperties.interval.toString(),
           ),
           Text(
             'Range:' + _recurrenceProperties.recurrenceRange.toString(),
           ),
           Text(
             'WeekDays:' + _recurrenceProperties.weekDays.toString(),
           ),
           Text(
             'Week:' + _recurrenceProperties.week.toString(),
           ),
           Text(
             'DayOfMonth:' + _recurrenceProperties.dayOfMonth.toString(),
           ),
           Text(
             'DayOfWeek:' + _recurrenceProperties.dayOfWeek.toString(),
           ),
           Text(
             'Month:' + _recurrenceProperties.month.toString(),
           ),
         ],
       ),
       actions: <Widget>[
         new FlatButton(
             child: const Text('CANCEL'),
             onPressed: () {
               Navigator.pop(context);
             }),
         new FlatButton(
             child: const Text('OK'),
             onPressed: () {
               Navigator.pop(context);
             })
       ],
     );},
  );
}

View sample in GitHub

recurrence properties

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments
Please sign in to leave a comment
Access denied
Access denied