Skip to main content

general_datetime 3.0.0 copy "general_datetime: ^3.0.0" to clipboard
general_datetime: ^3.0.0 copied to clipboard

Gregorian, Persian and Umm al-Qura chronology, strict civil-date contracts and Flutter Material date-picker adapters.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:general_datetime/general_datetime.dart';
import 'package:general_datetime/delegates.dart';
import 'package:general_datetime/default_localizations.dart';

void main() {
  // Create a Gregorian date and convert it to Persian dates:
  PersianDateTime jDate = PersianDateTime.fromDateTime(DateTime(2025, 3, 1));
  debugPrint(
      'Converted to Jalali: ${jDate.toString()}'); // e.g. "1403-12-11 00:00:00.000"

  // Create a Jalali date directly (auto-normalization applies):
  PersianDateTime directDate = PersianDateTime(1403, 12, 11, 14, 30);
  debugPrint('Direct Jalali: ${directDate.toString()}');

  // Hijri Example:
  HijriDateTime hDate = HijriDateTime.fromDateTime(DateTime(2025, 3, 1));
  debugPrint('Converted to Hijri: ${hDate.toString()}');

  runApp(const AppStartup());
}

class AppStartup extends StatelessWidget {
  const AppStartup({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      locale: const Locale('en'),
      supportedLocales: const <Locale>[Locale('en')],
      home: Builder(
        builder: (BuildContext context) {
          return Scaffold(
            appBar: AppBar(
              title: const Text('Calendar delegates'),
            ),
            body: SingleChildScrollView(
              child: Column(
                children: [
                  const Text('Gregorian Calendar'),
                  CalendarDatePicker(
                    initialDate: DateTime.now(),
                    firstDate: DateTime(2020, 1, 1),
                    lastDate: DateTime(2030, 12, 31),
                    currentDate: DateTime.now(),
                    calendarDelegate: const GregorianCalendarDelegate(),
                    onDateChanged: (value) {},
                  ),
                  const Divider(),
                  const Text('Persian Calendar'),
                  Localizations.override(
                    context: context,
                    delegates: const <LocalizationsDelegate<dynamic>>[
                      DefaultPersianCalendarMaterialLocalizations.delegate,
                    ],
                    child: CalendarDatePicker(
                      initialDate: PersianDateTime.now(),
                      firstDate: PersianDateTime(1400, 1, 1),
                      lastDate: PersianDateTime(1450, 12, 29),
                      currentDate: PersianDateTime.now(),
                      onDateChanged: (value) {
                        debugPrint('Persian selected: $value');
                      },
                      calendarDelegate: const PersianCalendarDelegate(),
                    ),
                  ),
                  const Divider(),
                  const Text('Hijri Calendar'),
                  Localizations.override(
                    context: context,
                    delegates: const <LocalizationsDelegate<dynamic>>[
                      DefaultHijriCalendarMaterialLocalizations.delegate,
                    ],
                    child: CalendarDatePicker(
                      initialDate: HijriDateTime.now(),
                      firstDate: HijriDateTime(1440, 1, 1),
                      lastDate: HijriDateTime(1460, 12, 29),
                      currentDate: HijriDateTime.now(),
                      onDateChanged: (value) {
                        debugPrint('Hijri selected: $value');
                      },
                      calendarDelegate: const HijriCalendarDelegate(),
                    ),
                  ),
                ],
              ),
            ),
          );
        },
      ),
    );
  }
}
3
likes
160
points
296
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Gregorian, Persian and Umm al-Qura chronology, strict civil-date contracts and Flutter Material date-picker adapters.

Homepage
Repository (GitHub)
View/report issues

Topics

#date #time #calendar #utils #service

License

BSD-3-Clause (license)

Dependencies

flutter, general_datetime_core

More

Packages that depend on general_datetime