customDialog<T> static method

Future<T?> customDialog<T>({
  1. required BuildContext context,
  2. required Widget content,
  3. String? title,
  4. bool autoPop = true,
  5. bool barrierDismissible = true,
  6. dynamic onSubmit()?,
  7. dynamic onCancel()?,
  8. String okBtnText = 'SUBMIT',
})

Implementation

static Future<T?> customDialog<T>({
  required final BuildContext context,
  required final Widget content,
  final String? title,
  final bool autoPop = true,
  final bool barrierDismissible = true,
  final Function()? onSubmit,
  final Function()? onCancel,
  final String okBtnText = 'SUBMIT',
}) {
  void _doSubmit() {
    if (autoPop) Navigator.of(context).pop();
    if (onSubmit != null) onSubmit();
  }

  return showDialog<T>(
    context: context,
    barrierDismissible: barrierDismissible,
    builder: (BuildContext context) => AlertDialog(
      contentPadding: const EdgeInsets.all(6.0),
      titlePadding:
          const EdgeInsets.only(top: 20, bottom: 10, right: 15, left: 15),
      title: Text(title ?? '',
          style: const TextStyle(fontWeight: FontWeight.bold)),
      content: content,
      actionsOverflowDirection: VerticalDirection.down,
      actions: [
        TextButton(
          child: const Text('CANCEL'),
          onPressed: () {
            Navigator.of(context).pop();
            if (onCancel != null) onCancel();
          },
        ),
        TextButton(
          child: Text(okBtnText),
          onPressed: () => _doSubmit(),
        ),
      ],
    ),
  );
}