chooseDateTime static method
Implementation
static Future<DateTime?> chooseDateTime({
required BuildContext context,
String? initialDate,
}) async {
/// chọn ngày
DateTime? picked = await showDatePicker(
firstDate: DateTime(DateTime.now().year - 1),
context: context,
initialDate: DateTimeUtils.initialCalendarDate(initialDate),
lastDate: DateTimeUtils.maxDatePicker(),
fieldHintText: DateTimeFormat.shortDate.toLowerCase(),
);
/// trả về null nếu không chọn ngày
if (picked == null) return null;
/// context có thể đã unmount trong lúc chờ showDatePicker (người dùng
/// rời màn hình...), nên phải kiểm tra lại trước khi dùng tiếp
if (!context.mounted) return null;
/// chọn thời gian
var selectedDate = DateTimeUtils.dateWithCurrentTime(picked);
TimeOfDay? selectedTime = await showTimePicker(
context: context,
initialTime: TimeOfDay.fromDateTime(selectedDate),
);
var dateInput = DateTime(
selectedDate.year,
selectedDate.month,
selectedDate.day,
selectedTime?.hour ?? selectedDate.hour,
selectedTime?.minute ?? selectedDate.minute,
selectedDate.second,
);
return dateInput;
}