import 'dart:core'; /*class CalendarListPage extends StatefulWidget with NavigationDrawerItem { final String title = 'Termine'; @override State createState() => CalendarListPageState(); } class CalendarListPageState extends State { List _selectedDayList = []; Map> _events = {}; CalendarController? _calendarController; @override void dispose() { _calendarController!.dispose(); super.dispose(); } @override void initState() { super.initState(); _calendarController = CalendarController(); init(); } void init() async { EventController.getEventListStream().forEach((events) { setState(() { _events = _mapListToCalendarEvents(events); _selectedDayList = events .where((e) => DateTime(e.schedule.startTime.year, e.schedule.startTime.month, e.schedule.startTime.day) == DateTime( _calendarController!.selectedDay.year, _calendarController!.selectedDay.month, _calendarController!.selectedDay.day)) .toList(); }); }); } @override Widget build(BuildContext context) => SafeArea( bottom: false, child: Padding( padding: const EdgeInsets.fromLTRB(UIShapes.paddingSimple, UIShapes.paddingSimple, UIShapes.paddingSimple, 0), child: ListView( primary: true, children: [ FormattedCalendar(_events, _calendarController!, _onDaySelected), ColumnExtension.builder( itemCount: _selectedDayList.length, itemBuilder: (context, index) => CalendarListTile(_selectedDayList[index]), ), ], ), ), ); void _onDaySelected(DateTime dateTime, List list, List list2) { setState(() { _selectedDayList = list.isEmpty ? [] : list; }); } Map> _mapListToCalendarEvents(List list) { final map = >{}; DateTime dateKey; int i; int j; for (final e in list) { j = 0; dateKey = e.schedule.startTime; do { if (e.schedule.frequency != Frequency.once && e.schedule.interval != null) { if (e.schedule.frequency == Frequency.days) { dateKey = dateKey.add(Duration(days: e.schedule.interval!)); } else if (e.schedule.frequency == Frequency.weeks) { dateKey = dateKey.add(Duration(days: 7 * e.schedule.interval!)); } else if (e.schedule.frequency == Frequency.months) { dateKey = dateKey = DateTime(dateKey.year, dateKey.month + e.schedule.interval!, dateKey.day); } if (e.schedule.until != null && e.schedule.until!.isBefore(dateKey)) { break; } } i = 0; do { var dateKey2 = dateKey.add(Duration(days: i)); dateKey2 = DateTime(dateKey2.year, dateKey2.month, dateKey2.day); if (map.containsKey(dateKey2)) { map[dateKey2]!.add(e); } else { map[dateKey2] = [e]; } i++; } while (i < e.schedule.endTime.difference(e.schedule.startTime).inDays); j++; } while (e.schedule.frequency != Frequency.once && e.schedule.interval != null && j < 52); } return map; } } class FormattedCalendar extends StatelessWidget { final Map _events; final CalendarController _controller; final void Function(DateTime, List, List) _onDaySelected; const FormattedCalendar(this._events, this._controller, this._onDaySelected); @override Widget build(BuildContext context) { final defaultCalendar = TableCalendar( calendarController: CalendarController(), ); final calendar = TableCalendar( locale: 'de_DE', availableCalendarFormats: const { CalendarFormat.month: 'Month', }, headerStyle: HeaderStyle( centerHeaderTitle: true, titleTextBuilder: (date, locale) => '${getMonthName(date.month)} ${date.year.toString()}'.toUpperCase(), titleTextStyle: UITheme.theme.textTheme.headline5, ), daysOfWeekStyle: DaysOfWeekStyle( weekendStyle: defaultCalendar.daysOfWeekStyle.weekdayStyle, dowTextBuilder: (date, locale) => getDayName(date.weekday).toUpperCase(), ), startingDayOfWeek: StartingDayOfWeek.monday, calendarStyle: CalendarStyle( outsideWeekendStyle: defaultCalendar.calendarStyle.outsideStyle, weekendStyle: defaultCalendar.calendarStyle.weekdayStyle .apply(color: UIColors.grey5), weekdayStyle: defaultCalendar.calendarStyle.weekdayStyle .apply(color: UIColors.grey5), eventDayStyle: defaultCalendar.calendarStyle.weekdayStyle .apply(color: UIColors.grey5,), todayColor: UIColors.grey3, selectedColor: UIColors.grey5, markersColor: Color(0xFFFFD445), ), events: _events, calendarController: _controller, onDaySelected: _onDaySelected, ); return calendar; } static String getMonthName(int month) { switch (month) { case 1: return 'Januar'; case 2: return 'Februar'; case 3: return 'März'; case 4: return 'April'; case 5: return 'Mai'; case 6: return 'Juni'; case 7: return 'July'; case 8: return 'August'; case 9: return 'September'; case 10: return 'Oktober'; case 11: return 'November'; case 12: return 'Dezember'; default: return '?'; } } static String getDayName(int month) { switch (month) { case 1: return 'Mo'; case 2: return 'Di'; case 3: return 'Mi'; case 4: return 'Do'; case 5: return 'Fr'; case 6: return 'Sa'; case 7: return 'So'; default: return '?'; } } } */