kurdish_date_picker 1.0.0
kurdish_date_picker: ^1.0.0 copied to clipboard
A professional, highly customizable Kurdish-first Date Picker and Calendar widget for Flutter with full Kurdish Sorani support, RTL layout, Kurdish day/month names and Kurdish numerals. Supports singl [...]
🇮🇶 kurdish_date_picker
A professional, highly customizable Kurdish-first Date Picker and Calendar for Flutter.
Full Sorani Kurdish support · RTL · Kurdish numerals · Single / Range / Multiple selection · Material 3 · Light & Dark
kurdish_date_picker is a genuine, reusable Kurdish Date Picker built from scratch for
Flutter — not a wrapper around Flutter's default showDatePicker. It gives Kurdish
developers and Kurdish-language applications a first-class date-selection experience with
proper RTL layout, Kurdish Sorani day and month names, Kurdish numerals, and a
modern, customizable UI.
Screenshots (coming soon)
Light mode Dark mode TODO: add screenshot TODO: add screenshot
✨ Features #
- 🇮🇶 Kurdish Sorani first-class localization (RTL, weekday/month names)
- 🔢 Kurdish numerals (
٢٠٢٦), plus Latin - 📅 Single, range, and multiple date selection
- 🗓 Dialog APIs:
showKurdishDatePicker,showKurdishDateRangePicker,showKurdishDateMultiPicker - 🌗 Light and dark mode with seamless
ThemeDataintegration - 🎨 Full theming (
KurdishDatePickerTheme) - 📛 Date restricting:
firstDate,lastDate,disabledDates,selectableDayPredicate - 📌 Weekend configuration and styling
- 🗒 Today button
- 🗂 Month and Year pickers
- ⌨️ Date input field with localized parsing
- 📆 Calendar events with indicators
- 📱 Responsive across phone/tablet/desktop/web
- ♿ Accessibility (Semantics, keyboard, focus)
- 🎞 Optional animations
- 🧱 Material 3 ready, no deprecated APIs
- 🔒 Offline-first, zero unnecessary dependencies
🚀 Installation #
Add the dependency to your pubspec.yaml:
dependencies:
kurdish_date_picker: ^1.0.0
Then run:
flutter pub get
📖 Basic Usage #
Drop a KurdishDatePicker anywhere in your widget tree:
import 'package:flutter/material.dart';
import 'package:kurdish_date_picker/kurdish_date_picker.dart';
class MyScreen extends StatelessWidget {
const MyScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: KurdishDatePicker(
initialDate: DateTime.now(),
firstDate: DateTime(1900),
lastDate: DateTime(2100),
locale: KurdishLocale.sorani, // Kurdish Sorani
numberSystem: NumberSystem.kurdish, // ٢٠٢٦ style numerals
selectionMode: DateSelectionMode.single,
showTodayButton: true, // ئەمڕۆ
onDateSelected: (date) {
print('Selected: $date');
},
),
),
);
}
}
📱 Dialog API #
Just like Flutter's showDatePicker, the package provides convenient dialog helpers:
Single date #
final date = await showKurdishDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1900),
lastDate: DateTime(2100),
locale: KurdishLocale.sorani,
numberSystem: NumberSystem.kurdish,
);
Date range #
final range = await showKurdishDateRangePicker(
context: context,
initialDate: DateTime.now(),
);
if (range != null) {
print('Start: ${range.start}');
print('End: ${range.end}');
}
Multiple dates #
final dates = await showKurdishDateMultiPicker(
context: context,
initialDate: DateTime.now(),
);
if (dates != null) {
print('Selected ${dates.length} dates');
}
🗓 Range Picker (inline) #
KurdishDatePicker(
locale: KurdishLocale.sorani,
numberSystem: NumberSystem.kurdish,
selectionMode: DateSelectionMode.range,
onRangeSelected: (start, end) {
print('$start → $end');
},
)
🔢 Kurdish Numerals #
Convert any number or date string to Kurdish or Latin digits. The Kurdish UI
uses the Arabic-Indic digit set (٠١٢٣٤٥٦٧٨٩), matching Kurdish typographic
conventions.
import 'package:kurdish_date_picker/kurdish_date_picker.dart';
KurdishNumberFormatter.toKurdish(2026); // "٢٠٢٦"
KurdishNumberFormatter.toArabic(2026); // "٢٠٢٦"
KurdishNumberFormatter.toLatin(2026); // "2026"
KurdishNumberFormatter.toLatinString('٢١٢'); // "212"
// Pick the numeral system used in the UI:
KurdishDatePicker(
numberSystem: NumberSystem.kurdish,
// or numberSystem: NumberSystem.arabic,
// or numberSystem: NumberSystem.latin,
)
🗣 Localization #
The primary locale is Sorani Kurdish. Kurmanji, Arabic, and English are built in and share the same architecture.
KurdishDatePicker(
locale: KurdishLocale.sorani, // primary
// locale: KurdishLocale.kurmanji,
// locale: KurdishLocale.arabic,
// locale: KurdishLocale.english,
)
- All month/weekday names and UI strings come from a dedicated localization layer (never hard-coded in widgets).
- Kurdish locales are RTL by default; you can force direction with
textDirection.
KurdishDatePicker(
locale: KurdishLocale.sorani,
textDirection: TextDirection.rtl, // locked to RTL
)
Navigation arrows automatically flip in RTL.
🗒 "Today" Button #
KurdishDatePicker(
showTodayButton: true,
todayText: 'ئەمڕۆ', // optional custom text
)
🚫 Date Restrictions #
KurdishDatePicker(
firstDate: DateTime(2020),
lastDate: DateTime(2030),
disabledDates: [
DateTime(2026, 9, 10),
DateTime(2026, 9, 15),
],
selectableDayPredicate: (date) {
// Example: disable Fridays.
return date.weekday != DateTime.friday;
},
)
Weekend styling can be configured via weekendDays:
KurdishDatePicker(
weekendDays: { DateTime.friday },
)
📆 Calendar Events #
Display optional event indicators under dates (fully optional).
final events = [
KurdishCalendarEvent(
date: DateTime(2026, 9, 3),
title: 'چاوپێکەوتن', // "Meeting"
),
];
KurdishDatePicker(
events: events,
onDateSelected: (date) {},
)
🧸 Theme System #
Customize nearly everything with KurdishDatePickerTheme. Unspecified values fall back to
the ambient ThemeData so light/dark work automatically.
KurdishDatePicker(
themeData: const KurdishDatePickerTheme(
selectedColor: Colors.blue,
todayColor: Colors.green,
weekendColor: Colors.red,
borderRadius: BorderRadius.all(Radius.circular(16)),
headerColor: Colors.deepPurple,
headerTextColor: Colors.white,
),
)
Available theme fields:
| Field | Description |
|---|---|
selectedColor |
Selected day background |
todayColor |
Today highlight |
weekendColor |
Weekend labels |
disabledColor |
Disabled dates |
textColor |
Default text |
headerColor / headerTextColor |
Calendar header |
backgroundColor |
Calendar background |
borderRadius |
Corner radius |
textTheme |
Typography |
cellSize / headerHeight |
Sizing |
spacing |
Grid spacing |
elevation |
Dialog elevation |
eventColor |
Event indicator color |
rangeStartColor / rangeEndColor / rangeInBetweenColor |
Range band colors |
🌗 Light & Dark Mode #
The picker integrates with ThemeData directly — no extra work needed.
MaterialApp(
theme: ThemeData(useMaterial3: true, brightness: Brightness.light),
darkTheme: ThemeData(useMaterial3: true, brightness: Brightness.dark),
themeMode: ThemeMode.system,
)
📅 Date Formatting #
import 'package:kurdish_date_picker/kurdish_date_picker.dart';
KurdishDateFormatter.format(
DateTime(2026, 9, 3),
locale: KurdishLocale.sorani,
numberSystem: NumberSystem.kurdish,
);
// "٣ ئەیلوول ٢٠٢٦"
KurdishDateFormatter.formatNumeric(DateTime(2026, 6, 15));
// "١٥/٠٦/٢٠٢٦"
💬 Date Input Field #
An optional text field that accepts and formats Kurdish dates.
KurdishDateInput(
locale: KurdishLocale.sorani,
numberSystem: NumberSystem.kurdish,
initialDate: DateTime.now(),
onDateChanged: (date) {
// `date` is null whenever the input is invalid or incomplete.
},
onSubmitted: (date) {
print(date);
},
)
🗂 Month & Year Pickers #
// Month picker
KurdishMonthPicker(
locale: KurdishLocale.sorani,
year: 2026,
selectedMonth: 9,
onMonthSelected: (month) {},
)
// Year picker
KurdishYearPicker(
firstYear: 2000,
lastYear: 2030,
selectedYear: 2026,
onYearSelected: (year) {},
)
🧱 API Reference #
| Widget / Function | Description |
|---|---|
KurdishDatePicker |
Main embeddable picker widget |
KurdishCalendar |
Lower-level month calendar widget |
KurdishMonthPicker |
Standalone month grid picker |
KurdishYearPicker |
Standalone year grid picker |
KurdishDateInput |
Kurdish date text field |
showKurdishDatePicker |
Single date dialog |
showKurdishDateRangePicker |
Range dialog |
showKurdishDateMultiPicker |
Multiple date dialog |
KurdishDateFormatter |
Formatting helpers |
KurdishNumberFormatter |
Numeral conversion helpers |
KurdishDatePickerTheme |
Theme configuration |
KurdishCalendarEvent |
Event model |
KurdishDateRange |
Immutable date range model |
KurdishLocale |
Supported locales |
DateSelectionMode |
single | range | multiple |
NumberSystem |
latin | arabic | kurdish |
📦 Dependencies #
The package keeps runtime dependencies to an absolute minimum:
| Package | Reason |
|---|---|
intl |
Standard, offline pub.dev package used for robust locale-aware pattern formatting |
Everything else is implemented with pure Dart/Flutter.
🤝 Contributing #
Please read CONTRIBUTING.md to learn how to report bugs, submit translations, or open pull requests.
📜 License #
Proprietary License — Copyright © Nashwan Taha Nheli. All rights reserved.
This package is not open-source and is NOT distributed under the MIT License. See LICENSE for the full terms.
❓ FAQ #
Why not just translate Flutter's showDatePicker?
This package is a genuine calendar/date-picker UI system built from scratch with
Kurdish-first localization (RTL, numerals, names). It is not a wrapper.
Does it convert dates to a Kurdish calendar?
No. It uses Gregorian DateTime internally. By design the first version is a
Kurdish-localized date picker (not a Kurdish calendar conversion system), but the
architecture is extensible for future calendar systems.
Does it require internet? No. It is fully offline-first.
What Flutter version do I need? Flutter 3.10+ and Dart 3.0+.
Developed with ❤️ for the Kurdish developer community.
Nashwan Taha Nheli