DatePickerDialog constructor Null safety

DatePickerDialog(
  1. {Key? key,
  2. required DateTime initialDate,
  3. required DateTime firstDate,
  4. required DateTime lastDate,
  5. DateTime? currentDate,
  6. DatePickerEntryMode initialEntryMode = DatePickerEntryMode.calendar,
  7. SelectableDayPredicate? selectableDayPredicate,
  8. String? cancelText,
  9. String? confirmText,
  10. String? helpText,
  11. DatePickerMode initialCalendarMode = DatePickerMode.day,
  12. String? errorFormatText,
  13. String? errorInvalidText,
  14. String? fieldHintText,
  15. String? fieldLabelText,
  16. TextInputType? keyboardType,
  17. String? restorationId}
)

A Material-style date picker dialog.

Implementation

DatePickerDialog({
  super.key,
  required DateTime initialDate,
  required DateTime firstDate,
  required DateTime lastDate,
  DateTime? currentDate,
  this.initialEntryMode = DatePickerEntryMode.calendar,
  this.selectableDayPredicate,
  this.cancelText,
  this.confirmText,
  this.helpText,
  this.initialCalendarMode = DatePickerMode.day,
  this.errorFormatText,
  this.errorInvalidText,
  this.fieldHintText,
  this.fieldLabelText,
  this.keyboardType,
  this.restorationId,
}) : assert(initialDate != null),
     assert(firstDate != null),
     assert(lastDate != null),
     initialDate = DateUtils.dateOnly(initialDate),
     firstDate = DateUtils.dateOnly(firstDate),
     lastDate = DateUtils.dateOnly(lastDate),
     currentDate = DateUtils.dateOnly(currentDate ?? DateTime.now()),
     assert(initialEntryMode != null),
     assert(initialCalendarMode != null) {
  assert(
    !this.lastDate.isBefore(this.firstDate),
    'lastDate ${this.lastDate} must be on or after firstDate ${this.firstDate}.',
  );
  assert(
    !this.initialDate.isBefore(this.firstDate),
    'initialDate ${this.initialDate} must be on or after firstDate ${this.firstDate}.',
  );
  assert(
    !this.initialDate.isAfter(this.lastDate),
    'initialDate ${this.initialDate} must be on or before lastDate ${this.lastDate}.',
  );
  assert(
    selectableDayPredicate == null || selectableDayPredicate!(this.initialDate),
    'Provided initialDate ${this.initialDate} must satisfy provided selectableDayPredicate',
  );
}