MonthWidget constructor

MonthWidget(
  1. DateTime month, {
  2. DateWidgetBuilder? weekDayBuilder,
  3. WeekWidgetBuilder? weekBuilder,
  4. DateWidgetBuilder? dateBuilder,
  5. MonthWidgetStyle? style,
})

Implementation

MonthWidget(
  this.month, {
  DateWidgetBuilder? weekDayBuilder,
  WeekWidgetBuilder? weekBuilder,
  DateWidgetBuilder? dateBuilder,
  this.style,
})  : assert(month.debugCheckIsValidTimetableMonth()),
      weekDayBuilder =
          weekDayBuilder ?? ((context, date) => WeekdayIndicator(date)),
      weekBuilder = weekBuilder ??
          ((context, week) {
            final timetableTheme = TimetableTheme.orDefaultOf(context);
            return WeekIndicator(
              week,
              style: (style ?? timetableTheme.monthWidgetStyleProvider(month))
                      .removeIndividualWeekDecorations
                  ? timetableTheme
                      .weekIndicatorStyleProvider(week)
                      .copyWith(decoration: const BoxDecoration())
                  : null,
              alwaysUseNarrowestVariant: true,
            );
          }),
      dateBuilder = dateBuilder ??
          ((context, date) {
            assert(date.debugCheckIsValidTimetableDate());

            final timetableTheme = TimetableTheme.orDefaultOf(context);
            DateIndicatorStyle? dateStyle;
            if (date.firstDayOfMonth != month &&
                (style ?? timetableTheme.monthWidgetStyleProvider(month))
                    .showDatesFromOtherMonthsAsDisabled) {
              final original =
                  timetableTheme.dateIndicatorStyleProvider(date);
              dateStyle = original.copyWith(
                textStyle: original.textStyle.copyWith(
                  color: context.theme.colorScheme.background.disabledOnColor,
                ),
              );
            }
            return DateIndicator(date, style: dateStyle);
          });