showDraftModeAndroidDateDialog function

Future<DateTime?> showDraftModeAndroidDateDialog({
  1. required BuildContext context,
  2. required DateTime value,
  3. String? label,
})

Implementation

Future<DateTime?> showDraftModeAndroidDateDialog({
  required BuildContext context,
  required DateTime value,
  String? label,
}) {
  DateTime selected = value;
  final materialLocalizations = MaterialLocalizations.of(context);
  final firstDate = DateTime(DateTime.now().year - 50, 1, 1);
  final lastDate = DateTime(DateTime.now().year + 50, 12, 31);

  return showDialog<DateTime>(
    context: context,
    barrierDismissible: true,
    builder: (dialogContext) {
      return AlertDialog(
        title: Text(label ?? materialLocalizations.datePickerHelpText),
        content: SizedBox(
          width: 360,
          child: CalendarDatePicker(
            key: const ValueKey('draftmode-date-picker'),
            initialDate: selected,
            firstDate: firstDate,
            lastDate: lastDate,
            onDateChanged: (nextDate) {
              selected = DateTime(
                nextDate.year,
                nextDate.month,
                nextDate.day,
                value.hour,
                value.minute,
              );
            },
          ),
        ),
        actions: [
          TextButton(
            onPressed: () => Navigator.of(dialogContext).pop(),
            child: Text(materialLocalizations.cancelButtonLabel),
          ),
          FilledButton(
            onPressed: () => Navigator.of(dialogContext).pop(selected),
            child: Text(materialLocalizations.okButtonLabel),
          ),
        ],
      );
    },
  );
}