calendar_date_picker2

Creator: coderz1093

Last updated:

Add to Cart

Description:

calendar date picker2

CalendarDatePicker2 #



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











single mode
multi mode
range mode
dialog function














single scroll
multi scroll
range scroll
dialog scroll



Intro #
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.

Features #

Extended CalendarDatePicker allows null initialDate
Highly Customizable UI
Supports three modes: single, multi and range
Supports four views: day, month, year and scroll
Built-in showCalendarDatePicker2Dialog
Multi-language supports
Support of Material 3

Migrate from 0.x.x #
Version 1.x.x will by default enable month picker. If you want to migrate to v1.x.x from v0.x.x and would like to keep the old behavior, you will need to set disableMonthPicker to true.
How to use #
Make sure to check out examples for more details.
Installation #
Add the following line to pubspec.yaml:
dependencies:
calendar_date_picker2: ^1.1.7
copied to clipboard
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 #
CalendarDatePicker2(
config: CalendarDatePicker2Config(),
value: _dates,
onValueChanged: (dates) => _dates = dates,
);
copied to clipboard
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:
CalendarDatePicker2(
config: CalendarDatePicker2Config(
calendarType: CalendarDatePicker2Type.multi,
),
value: _dates,
onValueChanged: (dates) => _dates = dates,
);
copied to clipboard
Range Date Picker Configuration #
In order to use range mode date picker, you will need to set the calendarType of config to CalendarDatePicker2Type.range:
CalendarDatePicker2(
config: CalendarDatePicker2Config(
calendarType: CalendarDatePicker2Type.range,
),
value: _dates,
onValueChanged: (dates) => _dates = dates,
);
copied to clipboard
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),
);
...
copied to clipboard
Config options #
For CalendarDatePicker2 widget #



Argument
Type
Description




config
CalendarDatePicker2Config
Calendar UI related configurations


value
List<DateTime?>
The selected [DateTime]s that the picker should display.


onValueChanged
ValueChanged<List<DateTime>>?
Called when the selected dates changed


displayedMonthDate
DateTime?
Date to control calendar displayed month


onDisplayedMonthChanged
ValueChanged<DateTime>?
Called when the user navigates to a new month/year in the picker under non-scroll mode



For CalendarDatePicker2Config: #



Option
Type
Description




calendarType
CalendarDatePicker2Type?
Calendar picker type, has 3 values: single, multi, range


rangeBidirectional
bool?
Flag to enable selecting dates range also in reverse-chronological order


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
CalendarDatePicker2Mode?
The initially displayed view of the calendar picker, with four options available: day, month, year and scroll


calendarViewScrollPhysics
ScrollPhysics?
The scroll physics for the calendar month view


dynamicCalendarRows
bool?
Flag to enable dynamic calendar rows based on specific month


allowSameValueSelection
bool?
Flag to control [onValueChanged] behavior


animateToDisplayedMonthDate
bool?
Flag to always animate to the displayedMonthDate


weekdayLabels
List<String>?
Custom weekday labels, should starts with Sunday


weekdayLabelTextStyle
TextStyle?
Custom text style for weekday labels


weekdayLabelBuilder
WeekdayLabelBuilder?
Function to provide full control over weekday label widget


firstDayOfWeek
int?
Index of the first day of week, where 0 points to Sunday, and 6 points to Saturday.


lastMonthIcon
Widget?
Custom icon for last month button control


nextMonthIcon
Widget?
Custom icon for next month button control


controlsHeight
double?
Custom height for calendar control toggle's height


controlsTextStyle
TextStyle?
Custom text style for calendar mode toggle control


centerAlignModePicker
bool?
Flag to centralize year and month text label in controls


modePickersGap
double?
Custom gap distance between month and year mode pickers


disableModePicker
bool?
Flag to disable mode picker and hide the toggle icon


modePickerTextHandler
ModePickerTextHandler?
Function to control mode picker displayed text


modePickerBuilder
ModePickerBuilder?
Function to provide full control over mode picker UI


customModePickerIcon
Widget?
Custom icon for the mode picker button icon


useAbbrLabelForMonthModePicker
bool?
Use Abbreviation label for month mode picker, only works when month picker is enabled


dayViewController
PageController?
Custom page controller for the calendar day view


dayMaxWidth
double?
Max width of day widget. When [dayMaxWidth] is not null, it will override default size settings


dayBorderRadius
BorderRadius?
Custom border radius for day indicator


dayTextStyle
TextStyle?
Custom text style for calendar day(s)


todayTextStyle
TextStyle?
Custom text style for current calendar day(s)


disabledDayTextStyle
TextStyle?
Custom text style for disabled calendar day(s)


dayTextStylePredicate
DayTextStylePredicate?
Function to provide full control over calendar day(s) text style


selectedDayHighlightColor
Color?
The highlight color selected day


selectedDayTextStyle
TextStyle?
Custom text style for selected calendar day(s)


selectableDayPredicate
SelectableDayPredicate?
Function to provide full control over which dates in the calendar can be selected


selectedRangeDayTextStyle
TextStyle?
Custom text style for selected range calendar day(s)


selectedRangeHighlightColor
Color?
The highlight color for day(s) included in the selected range


selectedRangeDecorationPredicate
SelectedRangeDecorationPredicate?
Predicate to determine the day widget box decoration for a day in selected range


selectedRangeHighlightBuilder
SelectedRangeHighlightBuilder?
Function to provide full control over range picker highlight


daySplashColor
Color?
The splash color of the day widget


dayBuilder
DayBuilder?
Function to provide full control over day widget UI


dayModeScrollDirection
Axis?
Axis scroll direction for [CalendarDatePicker2Mode.day] mode


monthViewController
ScrollController?
Custom scroll controller for the calendar month view


monthBuilder
MonthBuilder?
Function to provide full control over month widget UI


hideMonthPickerDividers
bool?
Flag to hide dividers on month picker


selectableMonthPredicate
SelectableMonthPredicate?
Function to provide full control over which month in the month list can be selected.


disableMonthPicker
bool?
Flag to disable month picker


monthTextStyle
TextStyle?
Custom text style for month(s)


selectedMonthTextStyle
TextStyle?
Custom text style for selected month(s)


disabledMonthTextStyle
TextStyle?
Custom text style for disabled month(s)


yearViewController
ScrollController?
Custom scroll controller for the calendar year view


yearBorderRadius
BorderRadius?
Custom border radius for year indicator


yearTextStyle
TextStyle?
Custom text style for year(s)


selectedYearTextStyle
TextStyle?
Custom text style for selected year(s)


disabledYearTextStyle
TextStyle?
Custom text style for disabled year(s)


selectableYearPredicate
SelectableYearPredicate?
Function to provide full control over which year in the year list be selected.


yearBuilder
YearBuilder?
Function to provide full control over year widget UI


hideYearPickerDividers
bool?
Flag to hide dividers on year picker


scrollViewTopHeaderTextStyle
TextStyle?
Custom text style for scroll view top week labels header


hideScrollViewTopHeader
bool?
Flag to hide top week labels header on scroll view picker


hideScrollViewTopHeaderDivider
bool?
Flag to hide top week labels header divider on scroll view


hideScrollViewMonthWeekHeader
bool?
Flag to hide month calendar week labels header on scroll view


scrollViewConstraints
BoxConstraints?
BoxConstraints for the scroll calendar view, only work for scroll mode


scrollViewMonthYearBuilder
ScrollViewMonthYearBuilder?
Function to provide full control over scroll calendar month year UI


scrollViewOnScrolling
ScrollViewOnScrolling?
Function to callback over scrolling on scroll view


scrollViewController
ScrollController?
Custom scroll controller to the scroll calendar view



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.

CalendarDatePicker2WithActionButtons(
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,
);
copied to clipboard
Multi-language support #
This package has multi-language supports. To enable it, add your Locale into the wrapping MaterialApp:
MaterialApp(
localizationsDelegates: GlobalMaterialLocalizations.delegates,
supportedLocales: const [
Locale('en', ''),
Locale('zh', ''),
Locale('ru', ''),
Locale('es', ''),
Locale('hi', ''),
],
...
);
copied to clipboard











中文
русский
español
हिंदी



Contributions #
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 always create a minimum reproducible example for an issue
Please use the official Dart Extension as your formatter or use dart format . -l 80 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

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.