A highly customizable and lightweight date selection suite for Flutter.
bee_date_picker provides a reliable and responsive set of widgets for selecting dates and ranges. It's designed to be easy to integrate, deeply customizable through themes, and keeps your project lightweight with zero external dependencies.
Experience the fluid interaction and premium design of Bee Date Picker. Please check the Example Project.
| Light Mode | Dark Mode |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Feature | Single | Range | Month | Year |
|---|---|---|---|---|
| Inline Widget | โ | โ | โ | โ |
| Dialog Helper | โ | โ | โ | โ |
| Dark/Light Theme | โ | โ | โ | โ |
| Localization | โ | โ | โ | โ |
| Custom Builders | โ | โ | โ | โ |
| Min/Max Constraints | โ | โ | โ | โ |
Add to your pubspec.yaml:
dependencies:
bee_date_picker: ^0.1.0Launch a professional, pre-styled picker dialog immediately.
import 'package:bee_date_picker/bee_date_picker.dart';
void _pickDate() async {
// 1. Single Date
final DateTime? date = await showBeeDatePicker(context: context);
// 2. Date Range
final DateRange? range = await showBeeDateRangePicker(context: context);
// 3. Specialized
final DateTime? month = await showBeeMonthPicker(context: context);
final int? year = await showBeeYearPicker(context: context);
}Use widgets directly in your layouts for custom integration.
BeeDatePicker(
controller: BeeDateController(initialDate: DateTime.now()),
onDateSelected: (date) => print(date),
)Bee Date Picker uses a centralized BeePickerTheme that adaptations dynamically to system brightness.
- Provided
themeparameter in individual pickers. - Parent
BeePickerThemeScopein the widget tree. - Default
BeePickerDefaults(adapts to Light/Dark mode).
| Property | Summary |
|---|---|
selectedDayColor |
The primary brand color for selected days. |
rangeDayColor |
Background color for dates within a range selection. |
borderRadius |
Curvature of picker container and selection markers. |
headerTitleTextStyle |
Styling for the Month/Year navigation title. |
todayBorderColor |
Indicator color for the current date. |
dialogBackgroundColor |
Background color of the popup dialog. |
BeePickerThemeScope(
theme: BeePickerTheme(
selectedDayColor: Color(0xFFFACC15), // Bee Yellow
borderRadius: 16,
headerIconColor: Colors.black,
),
child: MyApp(),
)Fine-tune how the picker behaves using BeePickerConfig.
| Property | Type | Description |
|---|---|---|
minDate |
DateTime |
Earliest date allowed. |
maxDate |
DateTime |
Latest date allowed. |
firstDayOfWeek |
Enum |
monday or sunday. |
showOutsideDays |
bool |
Show dates from next/prev months. |
locale |
Locale |
Force a specific language/formatting. |
config: BeePickerConfig(
disabledDates: DisabledDates(
weekdays: [DateTime.sunday], // No selection on Sundays
predicate: (date) {
// Custom business logic: e.g., no selection on national holidays
return isPublicHoliday(date);
},
),
)For power users, BeeDateController provides programmatic control over the picker's state.
final controller = BeeDateController();
// Navigate programmatically
controller.nextPage();
controller.goToMonth(DateTime(2025, 12));
// Switch View Mode
controller.switchView(BeeCalendarView.year);
// Clear or Set Selection
controller.selectDate(DateTime(2024, 1, 1));Wish to replace the header or the day cells entirely? Use our builder API.
BeeDatePicker(
controller: controller,
config: BeePickerConfig(
dayCellBuilder: (context, date, isSelected, isDisabled, isToday, isOutside) {
return Center(
child: Text(
'${date.day}',
style: TextStyle(color: isSelected ? Colors.amber : Colors.black),
),
);
},
),
)"Making coding feels like magic."






