wrapInYesCancelConfirmDialog static method

void wrapInYesCancelConfirmDialog(
  1. BuildContext context,
  2. String title, {
  3. String? contentString,
  4. Widget? contentWidget,
  5. String action1Text = 'Yes',
  6. required VoidCallback action1,
  7. Color? action1ButtonFgColor,
  8. String cancelActionText = 'Cancel',
  9. bool preActionValidation()?,
})

Implementation

static void wrapInYesCancelConfirmDialog(BuildContext context, String title, {
  String? contentString,
  Widget? contentWidget,
  String action1Text = 'Yes',
  required VoidCallback action1,
  Color? action1ButtonFgColor,
  String cancelActionText = 'Cancel',
  bool Function()? preActionValidation
})
{
  if (contentString.isNullOrEmpty && contentWidget == null) {
    throw 'Either contentString or contentWidget should be supplied';
  }

  Widget content = contentString != null
      ? Text(contentString)
      : contentWidget!;

  showDialog(context: context, builder: (context) {
    return AlertDialog(
      title: Text(title),
      content: content,
      actions: [
        TextButton(
            onPressed: () {
              bool execute = preActionValidation == null || preActionValidation();
              if (execute) {
                action1();
                Navigator.pop(context);
              }
            },
            style: ButtonStyle(
                foregroundColor: MaterialStatePropertyAll(action1ButtonFgColor)
            ),
            child: Text(action1Text)
        ),
        TextButton(onPressed: () => Navigator.pop(context), child: Text(cancelActionText)),
      ],

    );
  });
}