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'; Future showCountryDialog(BuildContext context) async { showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return const _AnimatedCountryDialog(); }, ); } class _AnimatedCountryDialog extends StatefulWidget { const _AnimatedCountryDialog({Key? key}) : super(key: key); @override State<_AnimatedCountryDialog> createState() => _AnimatedCountryDialogState(); } class _AnimatedCountryDialogState extends State<_AnimatedCountryDialog> 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: const EdgeInsets.only( top: 50, left: 20, right: 20, bottom: 20), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10), const Text( "United Arab Emirates", textAlign: TextAlign.left, style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 15), Text( "Proxibuy is currently only available in your country.\nTo explore other regions, please visit the website or contact support.", textAlign: TextAlign.left, style: TextStyle( color: AppColors.popupText, fontWeight: FontWeight.bold, fontSize: 16, ), ), const SizedBox(height: 25), Center( child: ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: AppColors.confirmButton, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), padding: const EdgeInsets.symmetric( horizontal: 50, vertical: 12), ), onPressed: () => Navigator.of(context).pop(), child: Text( "Continue", style: TextStyle(color: AppColors.textPrimary, fontSize: 16), ), ), ), ], ), ), Positioned( top: -40, child: Container( decoration: BoxDecoration( shape: BoxShape.circle, 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.locationPopup.path), ), ), ), ), ], ), ), ), ); } }