···6565 // Configure BackgroundFetch.
6666 BackgroundFetch.configure(
6767 BackgroundFetchConfig(
6868- minimumFetchInterval: 60*8,
6868+ minimumFetchInterval: 60 * 8,
6969 stopOnTerminate: false,
7070 enableHeadless: true,
7171 startOnBoot: true,
···9191 if (repeat == 'daily') {
9292 newDay += repeatEvery;
9393 } else if (repeat == 'weekly') {
9494- int firstCheckedWeekday = weekdays.indexOf(true);
9595- // i = x days in the future. Starts with tomorrow:
9696- int i = 1;
9797- while (i != 100) {
9898- if (date.weekday + i == 7) {
9999- // ^ done looping through this week
100100- // set to monday next week:
101101- newDay += i;
102102- // skip weeks:
103103- newDay += 7 * repeatEvery - 1;
104104- // set to next checked weekday:
105105- newDay += firstCheckedWeekday;
106106- } else if (weekdays[date.weekday - 1] == true) {
107107- // ^ weekday is checked
108108- newDay += i;
109109- i = 100;
110110- } else {
111111- // ^ weekday is not checked
112112- i++;
113113- }
9494+ print('111');
9595+9696+ // get the zero-based weekday of date
9797+ int dateWeekday = date.weekday - 1;
9898+ // get the index of the first checked weekday, starting from tomorrow
9999+ int nextCheckedWeekdayInThisWeek = weekdays.indexOf(true, dateWeekday + 1);
100100+101101+ // if there is an upcoming checked weekday this week
102102+ if (nextCheckedWeekdayInThisWeek >= 0) {
103103+ // set newDay to the difference between the next checked weekday and today
104104+ newDay += nextCheckedWeekdayInThisWeek - dateWeekday;
105105+ }
106106+107107+ // if there is no upcoming checked weekday this week
108108+ if (nextCheckedWeekdayInThisWeek == -1) {
109109+ // find how many days left till monday next week. If it's currently monday (0), that's 7 days
110110+ int daysTillMonday = (7 - dateWeekday);
111111+ // set newDay to monday next week
112112+ newDay += daysTillMonday;
113113+114114+ // skip weeks. If it's repeated every 2 week, add 7 days to newDay
115115+ newDay += (7 * repeatEvery) - 1;
116116+117117+ // set newDay to the next checked weekday
118118+ int firstCheckedWeekday = weekdays.indexOf(true);
119119+ newDay += firstCheckedWeekday;
114120 }
121121+115122 } else if (repeat == 'monthly') {
116123 newMonth += repeatEvery;
117124 } else if (repeat == 'yearly') {