import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:lba/gen/assets.gen.dart'; import 'package:lba/res/colors.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:google_sign_in/google_sign_in.dart'; import 'package:lba/screens/auth/login_page.dart'; Future showLogoutDialog(BuildContext context) async { showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return const _AnimatedLogoutDialog(); }, ); } class _AnimatedLogoutDialog extends StatefulWidget { const _AnimatedLogoutDialog({Key? key}) : super(key: key); @override State<_AnimatedLogoutDialog> createState() => _AnimatedLogoutDialogState(); } class _AnimatedLogoutDialogState extends State<_AnimatedLogoutDialog> with SingleTickerProviderStateMixin { late AnimationController _controller; late Animation _scaleAnimation; late Animation _fadeAnimation; @override void initState() { super.initState(); _controller = AnimationController( vsync: this, duration: const Duration(milliseconds: 450), ); _scaleAnimation = CurvedAnimation( parent: _controller, curve: Curves.elasticOut, ); _fadeAnimation = CurvedAnimation(parent: _controller, curve: Curves.easeIn); _controller.forward(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return FadeTransition( opacity: _fadeAnimation, child: ScaleTransition( scale: _scaleAnimation, child: Dialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(15), ), elevation: 10, backgroundColor: AppColors.surface, child: Stack( clipBehavior: Clip.none, alignment: Alignment.topCenter, children: [ Padding( padding: EdgeInsets.only( top: 50, left: 20, right: 20, bottom: 20, ), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ const Center( child: Text( "Log Out?", style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, ), textAlign: TextAlign.center, ), ), const SizedBox(height: 15), Text( "Are you sure you want to log out of your account?\nYou will need to sign in again to continue using the app.", style: TextStyle( color: AppColors.popupText, fontSize: 15, height: 1.4, fontWeight: FontWeight.bold, ), textAlign: TextAlign.left, ), const SizedBox(height: 25), Row( children: [ Expanded( flex: 2, child: ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: AppColors.errorColor, foregroundColor: AppColors.textPrimary, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), side: BorderSide(color: AppColors.offerTimer), ), padding: const EdgeInsets.symmetric(vertical: 12), ), onPressed: () async { Navigator.of(context).pop(); try { await GoogleSignIn().signOut(); await FirebaseAuth.instance.signOut(); print('✅ Logout successful'); if (context.mounted) { Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute( builder: (context) => const LoginPage(), ), (Route route) => false, ); } } catch (e) { print('❌ Logout error: $e'); if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('خطا در خروج: $e')), ); } } }, child: Text( "Log Out", style: TextStyle(color: AppColors.textPrimary), ), ), ), const SizedBox(width: 10), Expanded( flex: 1, child: OutlinedButton( style: OutlinedButton.styleFrom( foregroundColor: AppColors.textPrimary, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), side: BorderSide(color: AppColors.greyBorder), padding: const EdgeInsets.symmetric(vertical: 12), ), onPressed: () => Navigator.of(context).pop(), child: const Text("Cancel"), ), ), ], ), ], ), ), Positioned( top: -40, child: Container( decoration: BoxDecoration( shape: BoxShape.circle, color: AppColors.surface, boxShadow: [ BoxShadow( color: AppColors.shadowColor, blurRadius: 8, offset: const Offset(0, 4), ), ], ), child: CircleAvatar( backgroundColor: AppColors.surface, radius: 40, child: Padding( padding: const EdgeInsets.all(12.0), child: SvgPicture.asset( Assets.icons.solarLogout3BoldDuotone.path, ), ), ), ), ), ], ), ), ), ); } }