showCalendarDatePicker2Dialog function

Future<List<DateTime?>?> showCalendarDatePicker2Dialog({
  1. required BuildContext context,
  2. required CalendarDatePicker2WithActionButtonsConfig config,
  3. required Size dialogSize,
  4. List<DateTime?> initialValue = const [],
  5. BorderRadius? borderRadius,
  6. bool useRootNavigator = true,
  7. bool barrierDismissible = true,
  8. Color? barrierColor = Colors.black54,
  9. bool useSafeArea = true,
  10. Color? dialogBackgroundColor,
  11. RouteSettings? routeSettings,
  12. String? barrierLabel,
  13. TransitionBuilder? builder,
  14. bool selectableDayPredicate(
    1. DateTime
    )?,
})

Implementation

Future<List<DateTime?>?> showCalendarDatePicker2Dialog({
  required BuildContext context,
  required CalendarDatePicker2WithActionButtonsConfig config,
  required Size dialogSize,
  List<DateTime?> initialValue = const [],
  BorderRadius? borderRadius,
  bool useRootNavigator = true,
  bool barrierDismissible = true,
  Color? barrierColor = Colors.black54,
  bool useSafeArea = true,
  Color? dialogBackgroundColor,
  RouteSettings? routeSettings,
  String? barrierLabel,
  TransitionBuilder? builder,
  bool Function(DateTime)? selectableDayPredicate,
}) {
  var dialog = Dialog(
    insetPadding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 24.0),
    backgroundColor: Colors.transparent,
    clipBehavior: Clip.antiAlias,
    child: Material(
      color: dialogBackgroundColor ?? Theme.of(context).canvasColor,
      borderRadius: borderRadius ?? BorderRadius.circular(10),
      child: SizedBox(
        width: dialogSize.width,
        height: max(dialogSize.height, 410),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            CalendarDatePicker2WithActionButtons(
              initialValue: initialValue,
              config: config.copyWith(openedFromDialog: true),
              selectableDayPredicate: selectableDayPredicate,
            ),
          ],
        ),
      ),
    ),
  );

  return showDialog<List<DateTime?>>(
    context: context,
    useRootNavigator: useRootNavigator,
    routeSettings: routeSettings,
    builder: (BuildContext context) {
      return builder == null ? dialog : builder(context, dialog);
    },
    barrierDismissible: barrierDismissible,
    barrierColor: barrierColor,
    barrierLabel: barrierLabel,
    useSafeArea: useSafeArea,
  );
}