persian_datetimepickers 1.1.1 copy "persian_datetimepickers: ^1.1.1" to clipboard
persian_datetimepickers: ^1.1.1 copied to clipboard

Numeric Persian (Jalali) and Gregorian date and time pickers for Flutter.

Persian Datetime Pickers #

pub package CI License: MIT Platform: Flutter Dart 3

Persian Datetime Pickers gives Flutter apps compact numeric date and time dialogs for Persian (Jalali) and Gregorian workflows. You use it when the standard Material date picker is too calendar-heavy and you want a small picker that stays clear in Persian, English, right-to-left, and left-to-right screens.

The package returns normal Flutter values: DateTime, milliseconds since epoch, and TimeOfDay. It supports custom labels, custom text styles, date ranges, Jalali conversion, and simple formatting helpers.

Persian time picker Persian date picker

At a Glance #

Surface What you get
Jalali date picker Numeric year, month, and day picker with Persian labels by default.
Gregorian date picker Same dialog shape with English labels and Gregorian date output.
Time picker 24-hour picker with valid 00:00 through 23:59 support.
Range control firstDate and lastDate clamp the selectable year, month, and day values.
Styling PersianDateTimeStyle controls accent color and text styles.
Formatting helpers toPersianDate(), toFancyString(), and TimeOfDay.toFancyString().

Quick Start #

Requirements: Flutter >= 3.10 and Dart >= 3.0.

dependencies:
  persian_datetimepickers: ^1.1.1
import 'package:persian_datetimepickers/persian_datetimepickers.dart';

Date Picker #

Default behavior: the picker opens in Jalali mode and returns a Gregorian DateTime.

final date = await showPersianDatePicker(
  context: context,
  initialDate: DateTime.now(),
  firstDate: DateTime(2020),
  lastDate: DateTime(2035, 12, 31),
);

if (date != null) {
  print(date.toPersianDate());
}

Use Gregorian mode when you want English labels and Gregorian number ranges:

final date = await showPersianDatePicker(
  context: context,
  isJalali: false,
  initialDate: DateTime(2024, 2, 29),
);

Use the timestamp helper when storage needs milliseconds:

final timestamp = await showPersianDatePickerTimestamp(
  context: context,
  firstDate: DateTime(2020),
  lastDate: DateTime(2035, 12, 31),
);

Time Picker #

Default behavior: the picker uses a 24-hour clock and returns TimeOfDay.

final time = await showPersianTimePicker(
  context: context,
  initialTime: const TimeOfDay(hour: 0, minute: 5),
);

if (time != null) {
  print(time.toFancyString()); // 00:05
}

Labels #

Override any visible dialog label without replacing the picker UI:

await showPersianDatePicker(
  context: context,
  titleText: 'Select deadline',
  yearLabelText: 'Year',
  monthLabelText: 'Month',
  dayLabelText: 'Day',
  cancelText: 'Back',
  saveText: 'Use date',
);

The time picker accepts the same titleText, cancelText, and saveText parameters, plus hourLabelText and minuteLabelText.

Styling #

Set the accent color and text styles with PersianDateTimeStyle:

await showPersianDatePicker(
  context: context,
  persianDateTimeStyle: PersianDateTimeStyle(
    color: Colors.purple,
    headingStyle: const TextStyle(fontSize: 22, fontWeight: FontWeight.bold),
    titleStyle: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600),
    numbersStyle: const TextStyle(fontSize: 16),
  ),
);

Development #

flutter pub get
flutter analyze
flutter test
dart pub publish --dry-run

Run the example:

cd example
flutter run

pub.dev · GitHub · Issues · More packages

21
likes
160
points
147
downloads

Documentation

API reference

Publisher

verified publishergabrimatic.info

Weekly Downloads

Numeric Persian (Jalali) and Gregorian date and time pickers for Flutter.

Repository (GitHub)
View/report issues

Topics

#flutter #dart #persian #jalali #datepicker

License

MIT (license)

Dependencies

flutter, numberpicker, shamsi_date

More

Packages that depend on persian_datetimepickers