showModalPopupDatePicker function

Future<DateTime?> showModalPopupDatePicker(
  1. BuildContext context, {
  2. double? height,
  3. CupertinoDatePickerMode mode = CupertinoDatePickerMode.dateAndTime,
  4. DateTime? initialDateTime,
  5. DateTime? minimumDate,
  6. DateTime? maximumDate,
  7. int? minimumYear,
  8. int? maximumYear,
})

Implementation

Future<DateTime?> showModalPopupDatePicker(BuildContext context,
    {double? height,
    CupertinoDatePickerMode mode = CupertinoDatePickerMode.dateAndTime,
    DateTime? initialDateTime,
    DateTime? minimumDate,
    DateTime? maximumDate,
    int? minimumYear,
    int? maximumYear}) {
  DateTime dateTime = initialDateTime ?? DateTime.now();

  return showBaseBottomSheet(
    GestureDetector(
      child: SizedBox(
        height: pickerHeight + pickerTitleHeight,
        child: Material(
          type: MaterialType.transparency,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.end,
            children: <Widget>[
              BaseClickerClipRRect(
                borderRadius: const BorderRadius.only(
                  topLeft: Radius.circular(18),
                  topRight: Radius.circular(18),
                ),
                child: BasePickerTitle(
                  onCancel: () {
                    Navigator.of(context).pop();
                  },
                  onConfirm: () {
                    Navigator.of(context).pop(dateTime);
                  },
                ),
              ),
              Container(
                height: pickerHeight,
                color: BasePickerTitleConfig.config.backgroundColor,
                child: CupertinoDatePicker(
                  mode: mode,
                  onDateTimeChanged: (changed) {
                    dateTime = changed;
                  },
                  initialDateTime: initialDateTime ?? DateTime.now(),
                  minimumDate: minimumDate,
                  maximumDate: maximumDate,
                  minimumYear: minimumYear ?? 1,
                  maximumYear: maximumYear,
                ),
              ),
            ],
          ),
        ),
      ),
      onVerticalDragUpdate: (v) => false,
    ),
    backgroundColor: Colors.transparent,
    isDismissible: true,
  );
}