setWeekDay method
Change weekday
of this date
set weekStartsOn
if you want to use any other day as the start of the week
Implementation
DateTime setWeekDay(int weekday, [int weekStartsOn = DateTime.sunday]) {
const daysPerWeek = DateTime.daysPerWeek;
final currentDay = this.weekday;
final reminder = weekday % daysPerWeek;
final dayIndex = (reminder + daysPerWeek) % daysPerWeek;
final delta = daysPerWeek - weekStartsOn;
final diff = weekday < 0 || weekday > 6
? weekday - ((currentDay + delta) % daysPerWeek)
: ((dayIndex + delta) % daysPerWeek) -
((currentDay + delta) % daysPerWeek);
return addDays(diff);
}