import 'package:flutter/material.dart'; import '../colors/app_colors.dart'; import '../colors/app_gradients.dart'; import '../strings/common_strings.dart'; import 'tap_bounce.dart'; const Color _teal = AppColors.teal; const Color _accentPink = AppColors.pink; /// Diálogo de confirmação com a identidade visual do app (título rosa /// centrado, botão principal em pílula com gradiente), usado para todas as /// confirmações destrutivas/decisórias. Future showConfirmDialog( BuildContext context, { required String title, String? message, String cancelLabel = CommonStrings.cancel, required String confirmLabel, Color confirmColor = _teal, }) { // Só o teal (o valor por omissão, usado nas confirmações não-destrutivas // como "Adicionar outra criança?") ganha o gradiente verde da app; ações // destrutivas continuam com a cor sólida passada (normalmente rosa), para // manter esse alerta visual. final isDefaultColor = confirmColor == _teal; return showDialog( context: context, builder: (ctx) { return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24)), titlePadding: const EdgeInsets.fromLTRB(24, 24, 24, 8), contentPadding: const EdgeInsets.fromLTRB(24, 8, 24, 12), actionsPadding: const EdgeInsets.fromLTRB(20, 0, 20, 20), title: Text( title, textAlign: TextAlign.center, style: const TextStyle( fontWeight: FontWeight.w900, color: _accentPink, ), ), content: message == null ? null : Text( message, textAlign: TextAlign.center, style: TextStyle( color: Colors.black.withValues(alpha: 0.72), height: 1.4, ), ), actionsAlignment: MainAxisAlignment.center, actions: [ TapBounce( child: TextButton( style: TextButton.styleFrom(foregroundColor: _teal), onPressed: () => Navigator.of(ctx).pop(false), child: Text(cancelLabel), ), ), TapBounce( child: ClipRRect( borderRadius: BorderRadius.circular(999), child: DecoratedBox( decoration: BoxDecoration( gradient: isDefaultColor ? kGreenButtonGradient : null, color: isDefaultColor ? null : confirmColor, ), child: FilledButton( style: FilledButton.styleFrom( backgroundColor: Colors.transparent, foregroundColor: Colors.white, shape: const StadiumBorder(), textStyle: const TextStyle(fontWeight: FontWeight.w800), ), onPressed: () => Navigator.of(ctx).pop(true), child: Text(confirmLabel), ), ), ), ), ], ); }, ); }