import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import '../../../../core/theme/app_color_scheme.dart'; import '../../../../core/theme/app_spacing.dart'; import '../../../components/glass_panel.dart'; import '../../../components/neon_glow.dart'; /// 交易确认对话框 /// /// 显示交易详情(交易对、委托价格、交易金额、交易数量), /// 用户确认后执行交易。 class ConfirmDialog extends StatelessWidget { final bool isBuy; final String coinCode; final String price; final String quantity; final String amount; const ConfirmDialog({ super.key, required this.isBuy, required this.coinCode, required this.price, required this.quantity, required this.amount, }); @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; final isDark = Theme.of(context).brightness == Brightness.dark; final actionColor = isBuy ? AppColorScheme.getUpColor(isDark) : AppColorScheme.getDownColor(isDark); return Dialog( backgroundColor: Colors.transparent, child: GlassPanel( borderRadius: BorderRadius.circular(AppRadius.lg), padding: EdgeInsets.all(AppSpacing.lg), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Center( child: Text( '确认${isBuy ? '买入' : '卖出'}', style: GoogleFonts.inter( fontSize: 16, fontWeight: FontWeight.bold, color: colorScheme.onSurface, ), ), ), SizedBox(height: AppSpacing.lg), _dialogRow('交易对', '$coinCode/USDT', colorScheme), SizedBox(height: AppSpacing.sm), _dialogRow('委托价格', '$price USDT', colorScheme), SizedBox(height: AppSpacing.sm), _dialogRow('交易金额', '$amount USDT', colorScheme, valueColor: actionColor), SizedBox(height: AppSpacing.sm), _dialogRow('交易数量', '$quantity $coinCode', colorScheme), SizedBox(height: AppSpacing.lg), Row( children: [ Expanded( child: NeonButton( text: '取消', type: NeonButtonType.outline, onPressed: () => Navigator.of(context).pop(false), height: 44, showGlow: false, ), ), SizedBox(width: AppSpacing.sm), Expanded( child: NeonButton( text: '确认${isBuy ? '买入' : '卖出'}', type: isBuy ? NeonButtonType.tertiary : NeonButtonType.error, onPressed: () => Navigator.of(context).pop(true), height: 44, showGlow: true, ), ), ], ), ], ), ), ); } Widget _dialogRow(String label, String value, ColorScheme colorScheme, {Color? valueColor}) { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(label, style: GoogleFonts.inter( fontSize: 14, fontWeight: FontWeight.normal, color: colorScheme.onSurfaceVariant, )), Text(value, style: GoogleFonts.inter( fontSize: 14, fontWeight: FontWeight.w600, color: valueColor ?? colorScheme.onSurface, )), ], ); } }