dart -> flutter calendar proof of concept
Find this at dartpad.dartlang.org/?source=f5399510-0ef8-44b9-8292-c50769e81f2a.
Created with <3 with dartpad.dartlang.org.
dart -> flutter calendar proof of concept
Find this at dartpad.dartlang.org/?source=f5399510-0ef8-44b9-8292-c50769e81f2a.
Created with <3 with dartpad.dartlang.org.
void main() { | |
var now = new DateTime(2013, 1, 10); | |
var year = now.year; | |
var month = now.month; | |
DateTime firstDay = new DateTime(year, month, 1); | |
DateTime lastDay = new DateTime(year, month + 1, 0); | |
List<Day> monthDays = new List<Day>(); | |
for (var i = firstDay.day; i <= lastDay.day; i++) { | |
monthDays.add(new Day(date: new DateTime(year, month, i))); | |
} | |
// INFO: build month padding - beginning | |
var firstWeekday = firstDay.weekday; | |
DateTime lastDayPrevMonth = new DateTime(year, month, 0); | |
if (firstWeekday < 7) { | |
for (var i = 0; i < firstWeekday; i++) { | |
monthDays.insert( | |
0, | |
new Day(date: new DateTime(year, month - 1, lastDayPrevMonth.day - i)) | |
); | |
} | |
} | |
// INFO: build month padding - ending | |
var lastWeekday = lastDay.weekday; | |
DateTime firstDayNextMonth = new DateTime(year, month + 1, 1); | |
var remainingDays = (6 - lastWeekday == -1) ? 6 : (6 - lastWeekday); | |
for (var i = 0; i < remainingDays; i++) { | |
monthDays.add( | |
new Day(date: new DateTime(year, month + 1, firstDayNextMonth.day + i)) | |
); | |
} | |
// CONSOLE LOG TESTING | |
monthDays.forEach((day) => day.showDate()); | |
print("count: " + monthDays.length.toString()); | |
// INFO: generate weeks in this month | |
List<Week> monthWeeks = new List<Week>(); | |
for (var weeknum = 0; weeknum < (monthDays.length / 7); weeknum++) { | |
print("weeknum: " + weeknum.toString()); | |
List<Day> weekDays = new List<Day>(); | |
for (var weekday = (weeknum * 7); weekday < (weeknum * 7) + 7; weekday++) { | |
print("weekday: " + weekday.toString()); | |
weekDays.add(monthDays[weekday]); | |
} | |
monthWeeks.add(new Week(days: weekDays)); | |
} | |
Month currentMonth = new Month(year: year, month: month, weeks: monthWeeks); | |
print(Month.days[0]['short']); | |
} | |
class Day { | |
Day({ DateTime this.date }); | |
DateTime date; | |
showDate() => print(date.month.toString() + ": " + date.day.toString()); | |
} | |
class Week { | |
Week({ List<Day> this.days }); | |
List<Day> days; | |
} | |
class Month { | |
Month({ int this.year, int this.month, List<Week> weeks }); | |
int year; | |
int month; | |
List<Week> weeks; | |
static final days = { | |
0: { 'short': 'Mon', 'long' : 'Monday' }, | |
1: { 'short': 'Tue', 'long': 'Tuesday' }, | |
2: { 'short': 'Wed', 'long': 'Wednesday' }, | |
3: { 'short': 'Thur', 'long': 'Thursday' }, | |
4: { 'short': 'Fri', 'long': 'Friday' }, | |
5: { 'short': 'Sat', 'long': 'Saturday' }, | |
6: { 'short': 'Sun', 'long': 'Sunday' } | |
}; | |
} |