choiceDialog static method

Future<bool> choiceDialog({
  1. required BuildContext buildContext,
  2. required String title,
  3. required String subtitle,
  4. required String confirmationText,
  5. required String cancelText,
  6. bool barrierDismissible = true,
})

Exibe um diálogo de confirmação com duas opções

Parâmetros:

  • buildContext: Contexto do widget
  • title: Título do diálogo
  • subtitle: Texto de descrição/conteúdo
  • confirmationText: Texto do botão de confirmação
  • cancelText: Texto do botão de cancelamento
  • barrierDismissible: Se o diálogo pode ser fechado tocando fora dele

Retorna true se o usuário confirmou, false caso contrário

Implementation

static Future<bool> choiceDialog({
  required BuildContext buildContext,
  required String title,
  required String subtitle,
  required String confirmationText,
  required String cancelText,
  bool barrierDismissible = true,
}) async {
  final theme = SyncThemeProvider.current;

  final result = await showDialog<bool>(
    context: buildContext,
    barrierDismissible: barrierDismissible,
    builder: (context) => AlertDialog(
      backgroundColor: theme.surface,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(theme.borderRadius),
      ),
      title: Text(
        title,
        style: theme.titleStyle,
      ),
      content: Text(
        subtitle,
        style: theme.bodyStyle,
      ),
      actions: [
        TextButton(
          onPressed: () => Navigator.of(context).pop(false),
          child: Text(
            cancelText,
            style: theme.buttonStyle.copyWith(
              color: theme.textSecondary,
            ),
          ),
        ),
        ElevatedButton(
          onPressed: () => Navigator.of(context).pop(true),
          style: ElevatedButton.styleFrom(
            backgroundColor: theme.error,
            foregroundColor: Colors.white,
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(theme.borderRadius),
            ),
          ),
          child: Text(
            confirmationText,
            style: theme.buttonStyle,
          ),
        ),
      ],
    ),
  );

  return result ?? false;
}