@@ -138,7 +138,8 @@ class EventController<T extends Object?> extends ChangeNotifier {
138138 return currentDate.day == startDate.day;
139139 case RecurrenceEnd .on :
140140 return recurrenceEndDate != null &&
141- (currentDate.day == startDate.day) &&
141+ (currentDate.day >= startDate.day &&
142+ currentDate.isBefore (recurrenceEndDate)) &&
142143 currentDate.isBefore (recurrenceEndDate.add (
143144 Duration (days: 1 ),
144145 ));
@@ -165,6 +166,43 @@ class EventController<T extends Object?> extends ChangeNotifier {
165166 ));
166167 }
167168 }
169+
170+ bool _handleRecurrence ({
171+ required DateTime currentDate,
172+ required DateTime eventStartDate,
173+ required DateTime eventEndDate,
174+ required RecurrenceSettings recurrenceSettings,
175+ }) {
176+ switch (recurrenceSettings.frequency) {
177+ case RepeatFrequency .daily:
178+ final isDailyRecurrence = _isDailyRecurrence (
179+ currentDate: currentDate,
180+ eventEnd: eventEndDate,
181+ recurrenceSettings: recurrenceSettings,
182+ );
183+ return isDailyRecurrence;
184+ case RepeatFrequency .weekly:
185+ final isWeeklyRecurrence = _isWeeklyRecurrence (
186+ currentDate: currentDate,
187+ eventStartDate: eventStartDate,
188+ recurrenceSettings: recurrenceSettings,
189+ );
190+ return isWeeklyRecurrence;
191+ case RepeatFrequency .monthly:
192+ final isMonthlyRecurrence = _isMonthlyRecurrence (
193+ currentDate: currentDate,
194+ startDate: eventStartDate,
195+ recurrenceSettings: recurrenceSettings,
196+ );
197+ return isMonthlyRecurrence;
198+ case RepeatFrequency .yearly:
199+ // TODO(Shubham): Handle this case.
200+ break ;
201+ case RepeatFrequency .doNotRepeat:
202+ break ;
203+ }
204+ return false ;
205+ }
168206 //#endregion
169207
170208 //#region Public Methods
@@ -268,42 +306,14 @@ class EventController<T extends Object?> extends ChangeNotifier {
268306 if (recurrenceSettings == null ) {
269307 continue ;
270308 }
271- switch (recurrenceSettings.frequency) {
272- case RepeatFrequency .daily:
273- final isDailyRecurrence = _isDailyRecurrence (
274- currentDate: date,
275- eventEnd: event.endDate,
276- recurrenceSettings: recurrenceSettings,
277- );
278- if (isDailyRecurrence) {
279- events.add (event);
280- }
281- break ;
282- case RepeatFrequency .weekly:
283- final isWeeklyRecurrence = _isWeeklyRecurrence (
284- currentDate: date,
285- eventStartDate: event.date,
286- recurrenceSettings: recurrenceSettings,
287- );
288- if (isWeeklyRecurrence) {
289- events.add (event);
290- }
291- break ;
292- case RepeatFrequency .monthly:
293- final isWeeklyRecurrence = _isMonthlyRecurrence (
294- currentDate: date,
295- startDate: event.date,
296- recurrenceSettings: recurrenceSettings,
297- );
298- if (isWeeklyRecurrence) {
299- events.add (event);
300- }
301- break ;
302- case RepeatFrequency .yearly:
303- // TODO: Handle this case.
304- break ;
305- case RepeatFrequency .doNotRepeat:
306- break ;
309+ final isRecurrence = _handleRecurrence (
310+ currentDate: date,
311+ eventStartDate: event.date,
312+ eventEndDate: event.endDate,
313+ recurrenceSettings: recurrenceSettings,
314+ );
315+ if (isRecurrence) {
316+ events.add (event);
307317 }
308318 }
309319 return events;
0 commit comments