single static method

DayPicker<DateTime> single({
  1. Key? key,
  2. required DateTime selectedDate,
  3. required ValueChanged<DateTime> onChanged,
  4. required DateTime firstDate,
  5. required DateTime lastDate,
  6. DatePickerLayoutSettings datePickerLayoutSettings = const DatePickerLayoutSettings(),
  7. DateTime? initiallyShowDate,
  8. DatePickerRangeStyles? datePickerStyles,
  9. DatePickerKeys? datePickerKeys,
  10. SelectableDayPredicate? selectableDayPredicate,
  11. EventDecorationBuilder? eventDecorationBuilder,
  12. ValueChanged<DateTime>? onMonthChanged,
})

Creates a day picker where only one single day can be selected.

See also:

Implementation

static DayPicker<DateTime> single(
    {Key? key,
    required DateTime selectedDate,
    required ValueChanged<DateTime> onChanged,
    required DateTime firstDate,
    required DateTime lastDate,
    DatePickerLayoutSettings datePickerLayoutSettings =
        const DatePickerLayoutSettings(),
    DateTime? initiallyShowDate,
    DatePickerRangeStyles? datePickerStyles,
    DatePickerKeys? datePickerKeys,
    SelectableDayPredicate? selectableDayPredicate,
    EventDecorationBuilder? eventDecorationBuilder,
    ValueChanged<DateTime>? onMonthChanged}) {
  final startOfTheFirstDate = DatePickerUtils.startOfTheDay(firstDate);
  final endOfTheLastDate = DatePickerUtils.endOfTheDay(lastDate);
  final startOfTheSelectedDate = DatePickerUtils.startOfTheDay(selectedDate);
  final startOfTheInitiallyShowDate = initiallyShowDate == null
      ? null
      : DatePickerUtils.startOfTheDay(initiallyShowDate);

  assert(!startOfTheFirstDate.isAfter(endOfTheLastDate));
  assert(!endOfTheLastDate.isBefore(startOfTheFirstDate));
  assert(!startOfTheSelectedDate.isBefore(startOfTheFirstDate));
  assert(!startOfTheSelectedDate.isAfter(endOfTheLastDate));
  assert(startOfTheInitiallyShowDate == null ||
      !startOfTheInitiallyShowDate.isAfter(endOfTheLastDate));
  assert(startOfTheInitiallyShowDate == null ||
      !startOfTheInitiallyShowDate.isBefore(startOfTheFirstDate));

  final selection = DayPickerSingleSelection(startOfTheSelectedDate);
  final selectionLogic = DaySelectable(
    startOfTheSelectedDate,
    startOfTheFirstDate,
    endOfTheLastDate,
    selectableDayPredicate: selectableDayPredicate,
  );

  return DayPicker<DateTime>._(
    onChanged: onChanged,
    firstDate: startOfTheFirstDate,
    lastDate: endOfTheLastDate,
    initiallyShowDate: startOfTheInitiallyShowDate,
    selectionLogic: selectionLogic,
    selection: selection,
    eventDecorationBuilder: eventDecorationBuilder,
    onMonthChanged: onMonthChanged,
    selectableDayPredicate: selectableDayPredicate,
    datePickerKeys: datePickerKeys,
    datePickerStyles: datePickerStyles,
    datePickerLayoutSettings: datePickerLayoutSettings,
  );
}