date_range_picker_sheet

pub package

A pretty, customizable date range picker presented as a Material bottom sheet. Includes an inline month calendar with range highlighting, quick-select chips, and from/to fields.

Default orange theme    Customized teal theme with a range selected

  • ✅ Inline month calendar with smooth range highlight
  • ✅ Quick-select chips: Today, Last week, Last month
  • ✅ Fully theme-able (colors, radii, labels)
  • ✅ Configurable min/max selectable dates
  • ✅ Custom date format (defaults to dd-MMM-yyyy)
  • ✅ Localizable strings
  • ✅ Pure Dart/Flutter — no native code, no platform channels

Installation

Add this to your pubspec.yaml:

dependencies:
  date_range_picker_sheet: ^0.1.0

Then run:

flutter pub get

Usage

Show as a modal bottom sheet

import 'package:date_range_picker_sheet/date_range_picker_sheet.dart';

ElevatedButton(
  onPressed: () {
    DateRangePickerSheet.show(
      context,
      initialFromStr: '01-JAN-2026',
      initialToStr: '07-JAN-2026',
      onApply: (from, to) {
        debugPrint('Picked: $from -> $to');
      },
      onReset: () {},
    );
  },
  child: const Text('Pick a date range'),
);

Embed inline in any layout

DateRangePickerSheet(
  initialFromStr: '01-JAN-2026',
  initialToStr: '07-JAN-2026',
  onConfirm: (from, to) => debugPrint('Confirmed: $from -> $to'),
  onClose: () => Navigator.of(context).pop(),
);

Customize colors and labels

DateRangePickerSheet.show(
  context,
  initialFromStr: from,
  initialToStr: to,
  theme: const DateRangePickerSheetTheme(
    primaryColor: Color(0xFFFF6F00),
    surfaceColor: Color(0xFFF7F7F8),
    borderColor: Color(0xFFE5E7EB),
  ),
  labels: const DateRangePickerSheetLabels(
    title: 'Pick dates',
    confirm: 'Apply',
    close: 'Cancel',
  ),
  onApply: (from, to) {},
);

Limit the selectable range

DateRangePickerSheet.show(
  context,
  initialFromStr: from,
  initialToStr: to,
  minDate: DateTime(2026, 1, 1),
  maxDate: DateTime.now().add(const Duration(days: 30)),
  onApply: (from, to) {},
);

Format helpers

final str = DateRangePickerSheet.formatOrderDate(DateTime.now()); // 30-APR-2026
final dt  = DateRangePickerSheet.parseOrderDate('30-APR-2026');   // DateTime(2026,4,30)

API overview

Class Purpose
DateRangePickerSheet The widget itself. Embed directly or present via show().
DateRangePickerSheetTheme Visual configuration (colors, border radii).
DateRangePickerSheetLabels Localized strings (title, buttons, week labels...).

Selection rules

  • Tapping any selectable day starts a new range from that day.
  • Tapping a second day extends/closes the range.
  • Tapping a date earlier than the current "from" while picking the "to" will move the "from" to the earlier date instead.

Example

A complete runnable example lives in example/.

cd example
flutter run

Maintainer

This package is built and maintained by Mohamed Rizwan.

GitHub github.com/riz9882
LinkedIn linkedin.com/in/mohamed-rizwan-b667a1248
Email riz9882@gmail.com

Contributing

Contributions, issues, and feature requests are welcome.

  • Found a bug? Please open an issue with steps to reproduce, expected vs. actual behavior, and your Flutter / Dart version (flutter --version).
  • Want a feature? Open an issue first to discuss the design before sending a pull request — this avoids wasted effort if the API needs to be shaped a particular way.
  • Sending a PR?
    1. Fork the repo and create a feature branch (git checkout -b feat/my-change).
    2. Run flutter analyze and flutter test — both must be green.
    3. Update the CHANGELOG.md under an Unreleased heading describing your change.
    4. Open the PR against main and link any related issue.

If you find this package useful, please consider starring the GitHub repository — it helps others discover it.

License

This package is released under the MIT License © Mohamed Rizwan.

Libraries

date_range_picker_sheet
A bottom-sheet style date range picker with an inline month calendar, quick-select chips, and configurable theming.