import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:qpay/models/responsive_policy.dart'; import 'package:url_launcher/url_launcher.dart'; class ContactScreen extends StatelessWidget { const ContactScreen({super.key}); @override Widget build(BuildContext context) { final theme = Theme.of(context); final isDark = theme.brightness == Brightness.dark; return Scaffold( backgroundColor: isDark ? const Color(0xFF0D0D0D) : const Color(0xFFF8F9FA), appBar: AppBar( leading: context.canPop() ? IconButton( onPressed: () => context.pop(), icon: const Icon(Icons.arrow_back_rounded), color: theme.colorScheme.primary, ) : const SizedBox.shrink(), title: Text( 'Contact Us', style: TextStyle( fontWeight: FontWeight.w700, fontSize: 20, color: isDark ? Colors.white : Colors.black87, ), ), centerTitle: true, surfaceTintColor: Colors.transparent, backgroundColor: isDark ? const Color(0xFF0D0D0D) : const Color(0xFFF8F9FA), ), body: Center( child: LayoutBuilder( builder: (context, constraints) { final maxWidth = constraints.maxWidth > ResponsivePolicy.md ? ResponsivePolicy.md.toDouble() : constraints.maxWidth; return SizedBox( width: maxWidth, child: ListView( padding: const EdgeInsets.all(16), children: [ // Header card _buildHeaderCard(theme, isDark), const SizedBox(height: 16), // Social links card _buildSocialLinksCard(theme, isDark), ], ), ); }, ), ), ); } Widget _buildHeaderCard(ThemeData theme, bool isDark) { return Container( width: double.infinity, padding: const EdgeInsets.symmetric(vertical: 32, horizontal: 24), decoration: BoxDecoration( color: isDark ? const Color(0xFF1A1A2E) : Colors.white, borderRadius: BorderRadius.circular(20), border: Border.all( color: isDark ? Colors.white.withValues(alpha: 0.06) : Colors.grey.shade200, width: 1, ), boxShadow: [ BoxShadow( color: isDark ? Colors.black.withValues(alpha: 0.3) : Colors.black.withValues(alpha: 0.04), blurRadius: 16, offset: const Offset(0, 4), ), ], ), child: Column( children: [ Container( width: 72, height: 72, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ theme.colorScheme.primary.withValues(alpha: 0.2), theme.colorScheme.primary.withValues(alpha: 0.05), ], ), shape: BoxShape.circle, border: Border.all( color: theme.colorScheme.primary.withValues(alpha: 0.15), width: 1.5, ), ), child: Icon( Icons.support_agent_rounded, size: 36, color: theme.colorScheme.primary, ), ), const SizedBox(height: 20), Text( 'We\'d love to hear from you', style: TextStyle( fontSize: 18, fontWeight: FontWeight.w700, color: isDark ? Colors.white : Colors.black87, ), ), const SizedBox(height: 8), Text( 'Reach out to us through any of the channels below.', textAlign: TextAlign.center, style: TextStyle( fontSize: 14, fontWeight: FontWeight.w400, color: isDark ? Colors.white60 : Colors.grey.shade600, height: 1.5, ), ), ], ), ); } Widget _buildSocialLinksCard(ThemeData theme, bool isDark) { return Container( width: double.infinity, padding: const EdgeInsets.all(16), decoration: BoxDecoration( color: isDark ? const Color(0xFF1A1A2E) : Colors.white, borderRadius: BorderRadius.circular(20), border: Border.all( color: isDark ? Colors.white.withValues(alpha: 0.06) : Colors.grey.shade200, width: 1, ), boxShadow: [ BoxShadow( color: isDark ? Colors.black.withValues(alpha: 0.3) : Colors.black.withValues(alpha: 0.04), blurRadius: 16, offset: const Offset(0, 4), ), ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 8), child: Text( 'Connect With Us', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w600, color: isDark ? Colors.white54 : Colors.grey.shade500, letterSpacing: 1, ), ), ), const SizedBox(height: 4), // Instagram _buildSocialTile( theme: theme, isDark: isDark, icon: Icons.camera_alt_rounded, iconBackgroundColor: const Color(0xFFE1306C), title: 'Instagram', subtitle: 'Follow us for updates', onTap: () { launchUrl( Uri.parse('https://www.instagram.com/velocityafrica/'), mode: LaunchMode.externalApplication, ); }, ), const SizedBox(height: 8), // WhatsApp _buildSocialTile( theme: theme, isDark: isDark, icon: Icons.chat_rounded, iconBackgroundColor: const Color(0xFF25D366), title: 'WhatsApp', subtitle: 'Chat with us directly', onTap: () { launchUrl( Uri.parse('https://wa.me/263787770295'), mode: LaunchMode.externalApplication, ); }, ), ], ), ); } Widget _buildSocialTile({ required ThemeData theme, required bool isDark, required IconData icon, required Color iconBackgroundColor, required String title, required String subtitle, required VoidCallback onTap, }) { return Material( color: Colors.transparent, child: InkWell( borderRadius: BorderRadius.circular(16), onTap: onTap, child: Container( padding: const EdgeInsets.all(14), decoration: BoxDecoration( color: isDark ? Colors.white.withValues(alpha: 0.03) : Colors.grey.shade50, borderRadius: BorderRadius.circular(16), border: Border.all( color: isDark ? Colors.white.withValues(alpha: 0.04) : Colors.grey.shade100, width: 1, ), ), child: Row( children: [ Container( width: 48, height: 48, decoration: BoxDecoration( color: iconBackgroundColor.withValues(alpha: 0.12), borderRadius: BorderRadius.circular(14), ), child: Center( child: Icon(icon, color: iconBackgroundColor, size: 24), ), ), const SizedBox(width: 14), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, style: TextStyle( fontSize: 15, fontWeight: FontWeight.w600, color: isDark ? Colors.white : Colors.black87, ), ), const SizedBox(height: 2), Text( subtitle, style: TextStyle( fontSize: 13, fontWeight: FontWeight.w400, color: isDark ? Colors.white54 : Colors.grey.shade600, ), ), ], ), ), Container( width: 32, height: 32, decoration: BoxDecoration( shape: BoxShape.circle, color: iconBackgroundColor.withValues(alpha: 0.1), ), child: const Icon( Icons.arrow_forward_rounded, size: 16, color: Colors.grey, ), ), ], ), ), ), ); } }