Articles in this section
Category / Section

How to customize the special dates using builder in the Flutter Date Range Picker

1 min read

You can customize the specialDates cell by using cellBuilder in the Flutter date picker.

In initState(), set the default values for picker with special dates.

late List<DateTime> _specialDates;
 
@override
void initState() {
  _specialDates = <DateTime>[
    DateTime.now().add(Duration(days: 2)),
    DateTime.now().add(Duration(days: 3)),
    DateTime.now().add(Duration(days: 6)),
    DateTime.now().add(Duration(days: 7)),
    DateTime.now().add(Duration(days: -2)),
    DateTime.now().add(Duration(days: -3)),
    DateTime.now().add(Duration(days: -6)),
    DateTime.now().add(Duration(days: -7))
  ];
  super.initState();
}

_specialDates assigned to specialDates property of the DateRangePickerMonthViewSettings.

child: SfDateRangePicker(
  selectionMode: DateRangePickerSelectionMode.single,
  monthViewSettings:
      DateRangePickerMonthViewSettings(specialDates: _specialDates),
  cellBuilder: cellBuilder,
)),

isSpecialDate checks whether the visible date is special date or not, if it is special date then show that cell with Text with Icon widget.

Widget cellBuilder(BuildContext context, DateRangePickerCellDetails details) {
  DateTime _visibleDates = details.date;
  if (isSpecialDate(_visibleDates)) {
    return Column(
      children: [
        Container(
          child: Text(
            details.date.day.toString(),
            textAlign: TextAlign.center,
          ),
        ),
        Divider(
          color: Colors.white,
          height: 5,
        ),
        Icon(
          Icons.celebration,
          size: 13,
          color: Colors.red,
        ),
      ],
    );
  } else {
    return Container(
      child: Text(
        details.date.day.toString(),
        textAlign: TextAlign.center,
      ),
    );
  }
}
 
bool isSpecialDate(DateTime date) {
  for (int j = 0; j < _specialDates.length; j++) {
    if (date.year == _specialDates[j].year &&
        date.month == _specialDates[j].month &&
        date.day == _specialDates[j].day) {
      return true;
    }
  }
  return false;
}

View sample in GitHub

DatePicker Special dates

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please  to leave a comment
Access denied
Access denied