import 'package:flutter/material.dart'; import '../../../../core/theme/design_tokens.dart'; import '../../../../shared/widgets/app_button.dart'; class MessageActionSheet extends StatelessWidget { final String title; final String? description; final String? statusText; final bool isReadOnly; final VoidCallback? onAccept; final VoidCallback? onDecline; final IconData? icon; final Color? iconColor; const MessageActionSheet({ super.key, required this.title, this.description, this.statusText, this.isReadOnly = false, this.onAccept, this.onDecline, this.icon, this.iconColor, }); @override Widget build(BuildContext context) { return Container( width: double.infinity, padding: const EdgeInsets.fromLTRB(24, 20, 24, 0), decoration: const BoxDecoration( color: AppColors.white, borderRadius: BorderRadius.vertical(top: Radius.circular(24)), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ Container( width: 40, height: 4, decoration: BoxDecoration( color: AppColors.slate300, borderRadius: BorderRadius.circular(2), ), ), const SizedBox(height: 20), if (icon != null) ...[ Container( width: 72, height: 72, decoration: BoxDecoration( color: (iconColor ?? AppColors.blue500).withValues(alpha: 0.1), shape: BoxShape.circle, ), child: Icon( icon, size: 32, color: iconColor ?? AppColors.blue500, ), ), const SizedBox(height: 16), ], Text( title, style: const TextStyle( fontSize: 20, fontWeight: FontWeight.w600, color: AppColors.slate900, ), textAlign: TextAlign.center, ), if (description != null && description!.isNotEmpty) ...[ const SizedBox(height: 8), Text( description!, style: const TextStyle(fontSize: 14, color: AppColors.slate500), textAlign: TextAlign.center, ), ], if (statusText != null) ...[ const SizedBox(height: 16), Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( color: AppColors.slate100, borderRadius: BorderRadius.circular(16), ), child: Text( statusText!, style: const TextStyle(fontSize: 14, color: AppColors.slate600), ), ), ], const SizedBox(height: 24), if (!isReadOnly) ...[ Row( children: [ Expanded( child: AppButton( text: '拒绝', isOutlined: true, onPressed: () { Navigator.pop(context); onDecline?.call(); }, ), ), const SizedBox(width: AppSpacing.md), Expanded( child: AppButton( text: '接受', onPressed: () { Navigator.pop(context); onAccept?.call(); }, ), ), ], ), ], SizedBox(height: MediaQuery.of(context).padding.bottom + 12), ], ), ); } }