Lightweight and highly customizable calendar picker built on Flutter's original CalendarDatePicker, with support for multi and range modes.
Alternatives To Calendar_date_picker2
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Projectlearn Project Based Learning1,582
2 months ago7mitJavaScript
A curated list of project tutorials for project-based learning.
Learning Resources94
12 days ago3
A repository which contains different learning resources for various development stacks.
Learning Resources91
6 months ago2mit
All the FREE learning resources in one place. These resources are strictly recommended.
14 years ago6December 16, 20182otherDart
A flutter plugin for byutifull navigation with advanced routing
7 days ago19July 06, 20225apache-2.0Dart
Lightweight and highly customizable calendar picker built on Flutter's original CalendarDatePicker, with support for multi and range modes.
Compose Community26
2 months ago45mitJupyter Notebook
It is a community where we provide free and quality educations (Technical Skills) to all.
Learn Google Technologies23
5 months ago13mitDart
It is a hacktoberfest registered repository in which anyone can contribute. This repository contains code and resources related to Google Developers technologies. This repository is powered by Google Developer Students Club MUET Jamshoro.
7 months agoDart
Grundlagenkurs in Dart & Flutter. Einführung in die moderne App Entwicklung mit dem Flutter Framework.
5 months ago13mitJupyter Notebook
A repository by Spectrum-CETB for celebrating month long festival of open-source called Hacktoberfest.
Cookbook Hacktoberfest15
5 months ago10HTML
Cookbook Method is the process of learning a programming language by building up a repository of small programs that implement specific programming concepts.
Alternatives To Calendar_date_picker2
Select To Compare

Alternative Project Comparisons


Pub Package Pub Package GitHub Repo stars

A lightweight and customizable calendar picker based on Flutter CalendarDatePicker, with support for single date picker, range picker and multi picker.

single-mode-picker multi-mode-picker range-picker-mode dialog-function
single mode multi mode range mode dialog function


CalendarDatePicker2 consists of two main widgets:

  • CalendarDatePicker2, this widget only includes the calendar UI and will emit event whenever user taps a different date.
  • CalendarDatePicker2WithActionButtons, this widget includes calendar UI and the action buttons (CANCEL & OK). This widget will only emit the updated value when user taps 'OK' button.


  • Extended CalendarDatePicker allows null initialDate
  • Highly Customizable UI
  • Supports three modes: single, multi and range
  • Built-in showCalendarDatePicker2Dialog
  • Multi-language supports

How to use

Make sure to check out examples for more details.


Add the following line to pubspec.yaml:

  calendar_date_picker2: ^0.4.9

Basic setup

The complete example is available here.

CalendarDatePicker2 requires you to provide config and value:

  • config contains the configurations for your calendar setup and UI.
  • value is initial values passed into your calendar picker, value must be a List.

The minimum working sample

  config: CalendarDatePicker2Config(),
  value: _dates,
  onValueChanged: (dates) => _dates = dates,

Single Date Picker Configuration

During the initialization of CalendarDatePicker2Config the calendarType of the config instance will by default set to CalendarDatePicker2Type.single, so you don't have to set the calendar type specifically.

Multi Date Picker Configuration

In order to use multi mode date picker, you will need to set the calendarType of config to CalendarDatePicker2Type.multi:

  config: CalendarDatePicker2Config(
      calendarType: CalendarDatePicker2Type.multi,
  value: _dates,
  onValueChanged: (dates) => _dates = dates,

Range Date Picker Configuration

In order to use range mode date picker, you will need to set the calendarType of config to CalendarDatePicker2Type.range:

  config: CalendarDatePicker2Config(
      calendarType: CalendarDatePicker2Type.range,
  value: _dates,
  onValueChanged: (dates) => _dates = dates,

Use built-in dialog display method

This package includes built-in support to display calendar as a dialog. To use it, you will need to call showCalendarDatePicker2Dialog, which takes three required arguments: context, config, dialogSize:

var results = await showCalendarDatePicker2Dialog(
  context: context,
  config: CalendarDatePicker2WithActionButtonsConfig(),
  dialogSize: const Size(325, 400),
  value: _dates,
  borderRadius: BorderRadius.circular(15),

Config options

For CalendarDatePicker2Config:

Option Type Description
calendarType CalendarDatePicker2Type? Calendar picker type, has 3 values: single, multi, range
firstDate DateTime? The earliest allowable DateTime user can select
lastDate DateTime? The latest allowable DateTime user can select
currentDate DateTime? The DateTime representing today which will be outlined in calendar
calendarViewMode DatePickerMode? The initially displayed view of the calendar picker
weekdayLabels List<String>? Custom weekday labels, should starts with Sunday
weekdayLabelTextStyle TextStyle? Custom text style for weekday labels
firstDayOfWeek int? Index of the first day of week, where 0 points to Sunday, and 6 points to Saturday.
controlsHeight double? Custom height for calendar control toggle's height
lastMonthIcon Widget? Custom icon for last month button control
nextMonthIcon Widget? Custom icon for next month button control
controlsTextStyle TextStyle? Custom text style for calendar mode toggle control
dayTextStyle TextStyle? Custom text style for calendar day text
selectedDayTextStyle TextStyle? Custom text style for selected calendar day text
selectedDayHighlightColor Color? The highlight color selected day
disabledDayTextStyle TextStyle? Custom text style for disabled calendar day(s)
todayTextStyle TextStyle? Custom text style for current calendar day
yearTextStyle TextStyle? Custom text style for years list
selectedYearTextStyle TextStyle? Custom text style for selected year
dayBorderRadius BorderRadius? Custom border radius for day indicator
yearBorderRadius BorderRadius? Custom border radius for year indicator
selectableDayPredicate SelectableDayPredicate? Function to provide full control over which dates in the calendar can be selected
dayTextStylePredicate CalendarDayTextStylePredicate? Function to provide full control over calendar days text style
dayBuilder CalendarDayBuilder? Function to provide full control over day widget UI
yearBuilder CalendarYearBuilder? Function to provide full control over year widget UI
disableModePicker bool? Flag to disable mode picker and hide the toggle icon
centerAlignModePicker bool? Flag to centralize year and month text label in controls
customModePickerIcon Widget? Custom icon for the mode picker button icon
modePickerTextHandler CalendarModePickerTextHandler? Function to control mode picker displayed text

In addition to the configurations above, CalendarDatePicker2WithActionButtonsConfig has 9 extra options

Option Type Description
gapBetweenCalendarAndButtons double? The gap between calendar and action buttons
cancelButtonTextStyle TextStyle? Text style for cancel button
cancelButton Widget? Custom cancel button
okButtonTextStyle TextStyle? Text style for ok button
okButton Widget? Custom ok button
openedFromDialog bool? Is the calendar opened from dialog
closeDialogOnCancelTapped bool? Close dialog after user taps the CANCEL button
closeDialogOnOkTapped bool? Close dialog after user taps the OK button
buttonPadding EdgeInsets? Custom wrapping padding for Ok & Cancel buttons

Custom UI

By using the configs above, you could make your own custom calendar picker as your need.

image image

  config: CalendarDatePicker2WithActionButtonsConfig(
    firstDayOfWeek: 1,
    calendarType: CalendarDatePicker2Type.range,
    selectedDayTextStyle: TextStyle(color: Colors.white, fontWeight: FontWeight.w700),
    selectedDayHighlightColor: Colors.purple[800],
    centerAlignModePicker: true,
    customModePickerIcon: SizedBox(),
    dayBuilder: _yourDayBuilder,
    yearBuilder: _yourYearBuilder,
  value: _dates,
  onValueChanged: (dates) => _dates = dates,

Multi-language support

This package has multi-language supports. To enable it, add your Locale into the wrapping MaterialApp:

  localizationsDelegates: GlobalMaterialLocalizations.delegates,
  supportedLocales: const [
    Locale('en', ''),
    Locale('zh', ''),
    Locale('ru', ''),
    Locale('es', ''),
    Locale('hi', ''),
image image image image
**** **** espaol ****


Feel free to contribute to this project. Pull requests are welcome!

There are some tips before creating a PR:

  • Please always create an issue/feature before raising a PR
  • Please use the official Dart Extension as your formatter or use flutter format . if you are not using VS Code
  • Please keep your changes to its minimum needed scope (avoid introducing unrelated changes)
  • Please follow this git commit convention by adding feat: or fix: to your PR commit
Popular Flutter Projects
Popular Web Development Projects
Popular User Interface Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Web Development
Mobile Development