Skip to main content

kurdish_date_picker 1.0.0 copy "kurdish_date_picker: ^1.0.0" to clipboard
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

Pub version Pub likes Pub points Language: Dart


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 ThemeData integration
  • 🎨 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

1
likes
0
points
142
downloads

Publisher

unverified uploader

Weekly Downloads

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 single, range and multiple selection modes with light/dark theming.

Homepage

License

unknown (license)

Dependencies

flutter, intl

More

Packages that depend on kurdish_date_picker