showConfirmation<T> function

Future<T?> showConfirmation<T>(
  1. BuildContext context,
  2. String message,
  3. Function onAccept, {
  4. Function? onCancel,
  5. bool useLight = true,
})

show confirm dialog with result

Implementation

Future<T?> showConfirmation<T>(
    BuildContext context, String message, Function onAccept,
    {Function? onCancel, bool useLight = true}) async {
  var dialog = (BuildContext ctx) => CupertinoAlertDialog(
        content: Center(
          child: Container(
            padding: EdgeInsets.all(10),
            child: Text(message),
          ),
        ),
        actions: [
          CupertinoDialogAction(
            child: Text("Yes"),
            onPressed: () {
              Navigator.pop(ctx);
              onAccept();
            },
          ),
          CupertinoDialogAction(
            child: Text("No"),
            isDefaultAction: true,
            onPressed: () {
              if (onCancel != null) onCancel();
              Navigator.pop(ctx);
            },
          ),
        ],
      );
  var result = await showCupertinoDialog(
    context: context,
    builder: (ctx) => useLight
        ? Theme(data: ThemeData.light(), child: dialog(ctx))
        : dialog(ctx),
  );
  return result;
}