showSafaehTimedConfirm function

Future<bool?> showSafaehTimedConfirm({
  1. required BuildContext context,
  2. required String title,
  3. required String content,
  4. required String confirmLabel,
  5. String? cancelLabel,
  6. bool isDestructive = false,
  7. int seconds = kSafaehTimedConfirmSeconds,
  8. Widget? details,
  9. String statusLabel(
    1. int remaining
    )?,
  10. SafaehTitleBuilder? titleBuilder,
  11. SafaehTitleBuilder? contentBuilder,
  12. double railWidthOf(
    1. BuildContext context
    )?,
  13. SafaehTransition? fadeScale,
  14. SafaehTransition? slideUp,
  15. SafaehPhoneSheetPlacement phonePlacement = SafaehPhoneSheetPlacement.bottom,
  16. double? tabletBreakpoint,
  17. Duration? motion,
  18. Curve? enterCurve,
  19. Curve? exitCurve,
  20. double? maxWidth,
  21. double? maxHeight,
  22. bool barrierDismissible = true,
  23. bool useRootNavigator = true,
  24. SafaehRouteOptions? route,
})

Adaptive timed confirm. Hosts pass every label — no .tr() here.

Implementation

Future<bool?> showSafaehTimedConfirm({
  required BuildContext context,
  required String title,
  required String content,
  required String confirmLabel,
  String? cancelLabel,
  bool isDestructive = false,
  int seconds = kSafaehTimedConfirmSeconds,
  Widget? details,
  String Function(int remaining)? statusLabel,
  SafaehTitleBuilder? titleBuilder,
  SafaehTitleBuilder? contentBuilder,
  double Function(BuildContext context)? railWidthOf,
  SafaehTransition? fadeScale,
  SafaehTransition? slideUp,
  SafaehPhoneSheetPlacement phonePlacement = SafaehPhoneSheetPlacement.bottom,
  double? tabletBreakpoint,
  Duration? motion,
  Curve? enterCurve,
  Curve? exitCurve,
  double? maxWidth,
  double? maxHeight,
  bool barrierDismissible = true,
  bool useRootNavigator = true,
  SafaehRouteOptions? route,
}) {
  return showSafaeh<bool>(
    context: context,
    title: title,
    titleBuilder: titleBuilder,
    maxWidth: maxWidth,
    maxHeight: maxHeight ?? MediaQuery.sizeOf(context).height * 0.75,
    barrierDismissible: barrierDismissible,
    tabletBreakpoint: tabletBreakpoint,
    motion: motion,
    enterCurve: enterCurve,
    exitCurve: exitCurve,
    railWidthOf: railWidthOf,
    fadeScale: fadeScale,
    slideUp: slideUp,
    phonePlacement: phonePlacement,
    useRootNavigator: useRootNavigator,
    paintPhoneTitle: true,
    route: route,
    child: SafaehTimedConfirmSheet(
      title: title,
      content: content,
      confirmLabel: confirmLabel,
      cancelLabel: cancelLabel,
      seconds: seconds,
      isDestructive: isDestructive,
      details: details,
      statusLabel: statusLabel,
      titleBuilder: titleBuilder,
      contentBuilder: contentBuilder,
      tabletBreakpoint: tabletBreakpoint,
    ),
  );
}