gregorianDatePicker function

Future<DateTime?> gregorianDatePicker({
  1. required BuildContext context,
  2. required int initialYear,
  3. required int firstYear,
  4. required int lastYear,
  5. String locale = 'en',
})

Implementation

Future<DateTime?> gregorianDatePicker({
  required BuildContext context,
  required int initialYear,
  required int firstYear,
  required int lastYear,
  String locale = 'en', // <-- add this
}) async {
  DateTime tempSelected = DateTime(initialYear, 1, 1);
  final loc = AppLocalizations(Locale(locale));
  return showDialog<DateTime>(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        contentPadding: EdgeInsets.all(
            Dimen.isSmall(context) ? Dimen.spacingSmall : Dimen.spacingLarge),
        content: SizedBox(
          width: Dimen.isSmall(context)
              ? Dimen.dialogWidthSmall
              : Dimen.dialogWidthLarge,
          child: StatefulBuilder(
            builder: (context, setState) {
              return Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  CalendarTableGregorian(
                    selectedDate: tempSelected,
                    firstYear: firstYear,
                    lastYear: lastYear,
                    onDateSelected: (newDate) {
                      setState(() => tempSelected = newDate);
                    },
                    loc: loc,
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.end,
                    children: [
                      TextButton(
                        onPressed: () => Navigator.pop(context, null),
                        child: Text(loc.cancel),
                      ),
                      const SizedBox(width: Dimen.spacingMedium),
                      ElevatedButton(
                        onPressed: () => Navigator.pop(context, tempSelected),
                        child: Text(loc.ok),
                      ),
                      const SizedBox(width: Dimen.spacingMedium),
                    ],
                  ),
                  const SizedBox(height: Dimen.spacingMedium),
                ],
              );
            },
          ),
        ),
      );
    },
  );
}