import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../theme/app_theme.dart'; /// Dialog shown after user creation or secret reset. /// The secret is displayed only once — user must copy it. class SecretDialog extends StatefulWidget { final String username; final String secret; final bool isReset; const SecretDialog({ super.key, required this.username, required this.secret, this.isReset = false, }); static Future show( BuildContext context, { required String username, required String secret, bool isReset = false, }) { return showDialog( context: context, barrierDismissible: false, builder: (_) => SecretDialog( username: username, secret: secret, isReset: isReset, ), ); } @override State createState() => _SecretDialogState(); } class _SecretDialogState extends State { bool _copied = false; void _copy() async { await Clipboard.setData(ClipboardData(text: widget.secret)); setState(() => _copied = true); await Future.delayed(const Duration(seconds: 2)); if (mounted) setState(() => _copied = false); } @override Widget build(BuildContext context) { return AlertDialog( contentPadding: const EdgeInsets.all(24), title: Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: AppTheme.success.withValues(alpha: 0.12), borderRadius: BorderRadius.circular(8), ), child: Icon( widget.isReset ? Icons.lock_reset_rounded : Icons.check_circle_rounded, color: AppTheme.success, size: 22, ), ), const SizedBox(width: 12), Text( widget.isReset ? 'رمز ریست شد' : 'کاربر ایجاد شد', style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w700), ), ], ), content: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ // Warning banner Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: AppTheme.warning.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(8), border: Border.all(color: AppTheme.warning.withValues(alpha: 0.4)), ), child: const Row( children: [ Icon(Icons.warning_amber_rounded, color: AppTheme.warning, size: 18), SizedBox(width: 8), Expanded( child: Text( 'این رمز فقط یک‌بار نمایش داده می‌شود. حتماً آن را کپی کنید.', style: TextStyle(fontSize: 12, fontWeight: FontWeight.w500), ), ), ], ), ), const SizedBox(height: 20), // Username const Text( 'نام کاربری:', style: TextStyle( fontSize: 13, color: AppTheme.textSecondary, fontWeight: FontWeight.w500, ), ), const SizedBox(height: 4), Text( widget.username, style: const TextStyle( fontSize: 16, fontWeight: FontWeight.w700, color: AppTheme.textPrimary, ), ), const SizedBox(height: 16), // Secret const Text( 'رمز عبور:', style: TextStyle( fontSize: 13, color: AppTheme.textSecondary, fontWeight: FontWeight.w500, ), ), const SizedBox(height: 4), Container( padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 12), decoration: BoxDecoration( color: const Color(0xFFF1F5F9), borderRadius: BorderRadius.circular(8), border: Border.all(color: AppTheme.border), ), child: Row( children: [ Expanded( child: Text( widget.secret, style: const TextStyle( fontFamily: 'monospace', fontSize: 16, fontWeight: FontWeight.w700, letterSpacing: 1.5, color: AppTheme.textPrimary, ), ), ), InkWell( onTap: _copy, borderRadius: BorderRadius.circular(6), child: AnimatedSwitcher( duration: const Duration(milliseconds: 200), child: _copied ? const Icon(Icons.check_rounded, key: ValueKey('check'), color: AppTheme.success, size: 20) : const Icon(Icons.copy_rounded, key: ValueKey('copy'), color: AppTheme.textSecondary, size: 20), ), ), ], ), ), ], ), actions: [ ElevatedButton( onPressed: () => Navigator.of(context).pop(), child: const Text('متوجه شدم، بستن'), ), ], ); } }