flutter_date_pickers 0.4.3 flutter_date_pickers: ^0.4.3 copied to clipboard
Flutter package for day, week, range and month date pickers.
flutter_date_pickers #
Allows to use date pickers without dialog. Provides some customizable styles for date pickers.
A set of date pickers:
DayPicker
for one dayWeekPicker
for whole weekRangePicker
for random rangeMonthPicker
for monthYearPicker
for year
How to style date picker #
Every date picker constructor take a style object as a parameter (if no styles passed - defaults will be used).
For single value pickers (DayPicker, MonthPicker) it is DatePickerStyles object;
For range pickers (WeekPicker, RangePickers) it is DatePickerRangeStyles object;
Customizable styles: for all date pickers
Property | Description |
---|---|
TextStyle displayedPeriodTitle | title of the date picker |
TextStyle currentDateStyle | style for current date |
TextStyle disabledDateStyle | style for disabled dates (before first and after last date user can pick) |
TextStyle selectedDateStyle | style for selected date |
BoxDecoration selectedSingleDateDecoration | decoration for selected date in case single value is selected |
TextStyle defaultDateTextStyle | style for date which is neither current nor disabled nor selected |
DayHeaderStyle dayHeaderStyle | style for all weekday headers. For more control under weekday headers styles use dayHeaderStyleBuilder |
DayHeaderStyleBuilder dayHeaderStyleBuilder | builder to customize weekday header's style |
DayHeaderTitleBuilder dayHeaderTitleBuilder | builder to customize weekday header's title |
only for range date pickers (WeekPicker, RangePicker)
Property | Description |
---|---|
BoxDecoration selectedPeriodStartDecoration | decoration for the first date of the selected range |
BoxDecoration selectedPeriodLastDecoration | decoration for the first date of the selected range |
BoxDecoration selectedPeriodMiddleDecoration | Decoration for the date of the selected range which is not first date and not end date of this range |
How to make some dates not selectable date picker #
By default only dates before firstDate
and after lastDate
are not selectable. But you can set custom disabled days.
DayPicker
, WeekPicker
and RangePicker
take a SelectableDayPredicate selectableDayPredicate
where you can specify function which returns if some date is disabled or not.
If some date is disabled for selection it gets disabledDateStyle
.
If selected range or week pretends to include such disabled date UnselectablePeriodException
occurs.
To handle it - pass onSelectionError
callback to date picker.
How to make special decorations for some dates #
By default cells are decorated with datePickerStyles
slyles (or default if no styles was passed to date picker).
If you need special decoration for some days use eventDecorationBuilder
.
Currently only for DayPicker
, WeekPicker
and RangePicker
.
- If date is not selected basic styles will be merged with styles from
eventDecorationBuilder
. - If date is current date styles from
eventDecorationBuilder
win (if there are). - Otherwise basic styles (
datePickerStyles
) win.
What time I will get after selection? #
If one day selected: you will get start of the day (00:00:00).
If range/week selected: for start you will get start of the day (00:00:00) by default. for end you will get end of the day (23:59:59.999) by default.
If month selected:
you will get start (00:00:00) of the 1 day of month by default.
If selected month same as month of the firstDate
- you will get firstDate
.
Usage #
// Create week date picker with passed parameters
Widget buildWeekDatePicker (DateTime selectedDate, DateTime firstAllowedDate, DateTime lastAllowedDate, ValueChanged<DatePeriod> onNewSelected) {
// add some colors to default settings
DatePickerRangeStyles styles = DatePickerRangeStyles(
selectedPeriodLastDecoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadiusDirectional.only(
topEnd: Radius.circular(10.0),
bottomEnd: Radius.circular(10.0))),
selectedPeriodStartDecoration: BoxDecoration(
color: Colors.green,
borderRadius: BorderRadiusDirectional.only(
topStart: Radius.circular(10.0), bottomStart: Radius.circular(10.0)),
),
selectedPeriodMiddleDecoration: BoxDecoration(
color: Colors.yellow, shape: BoxShape.rectangle),
);
return WeekPicker(
selectedDate: selectedDate,
onChanged: onNewSelected,
firstDate: firstAllowedDate,
lastDate: lastAllowedDate,
datePickerStyles: styles
);
}
Example app #
Please checkout example.
For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.