import 'package:flutter/material.dart'; import '../../../../core/theme/app_spacing.dart'; import '../../../../core/theme/app_theme.dart'; import '../../../../core/theme/app_theme_extension.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 actionColor = isBuy ? context.appColors.up : context.appColors.down; 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: AppTextStyles.headlineLarge(context), ), ), SizedBox(height: AppSpacing.lg), _dialogRow(context, '交易对', '$coinCode/USDT'), SizedBox(height: AppSpacing.sm), _dialogRow(context, '委托价格', '$price USDT'), SizedBox(height: AppSpacing.sm), _dialogRow(context, '交易金额', '$amount USDT', valueColor: actionColor), SizedBox(height: AppSpacing.sm), _dialogRow(context, '交易数量', '$quantity $coinCode'), 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(BuildContext context, String label, String value, {Color? valueColor}) { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(label, style: AppTextStyles.headlineMedium(context).copyWith( fontWeight: FontWeight.w400, color: context.colors.onSurfaceVariant, )), Text(value, style: AppTextStyles.numberMedium(context).copyWith( color: valueColor ?? context.colors.onSurface, )), ], ); } }