import 'package:flutter/material.dart'; import '../theme/app_theme.dart'; class HeroSectionWidget extends StatelessWidget { const HeroSectionWidget({super.key}); @override Widget build(BuildContext context) { return Container( width: double.infinity, margin: const EdgeInsets.symmetric(horizontal: 8), decoration: BoxDecoration( borderRadius: BorderRadius.circular(24), gradient: AppTheme.cardGradient, boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.3), blurRadius: 20, offset: const Offset(0, 10), ), ], ), child: Stack( children: [ Positioned.fill( child: ClipRRect( borderRadius: BorderRadius.circular(24), child: Image.asset( 'assets/images/fond1.webp', fit: BoxFit.cover, errorBuilder: (context, error, stackTrace) { return Container( decoration: BoxDecoration( gradient: AppTheme.volcanoGradient, ), ); }, ), ), ), Positioned.fill( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(24), gradient: RadialGradient( center: const Alignment(0.3, -0.4), radius: 0.8, colors: [ Colors.transparent, Colors.transparent, const Color(0xFFFF4500).withOpacity(0.3), const Color(0xFFFF6347).withOpacity(0.2), Colors.transparent, ], stops: const [0.0, 0.3, 0.5, 0.7, 1.0], ), ), ), ), Positioned.fill( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(24), gradient: LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ Colors.transparent, Colors.black.withOpacity(0.7), ], ), ), ), ), Positioned( top: 20, left: 20, right: 20, child: Row( children: [ Container( width: 50, height: 50, decoration: const BoxDecoration( shape: BoxShape.circle, gradient: AppTheme.profileGradient, ), child: const Icon( Icons.person, color: Colors.white, size: 28, ), ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Welcome Back', style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: Colors.white.withOpacity(0.8), ), ), Text( 'John Anon', style: Theme.of(context).textTheme.titleLarge?.copyWith( color: Colors.white, ), ), ], ), ), Container( width: 44, height: 44, decoration: BoxDecoration( color: Colors.white.withOpacity(0.2), borderRadius: BorderRadius.circular(22), border: Border.all( color: Colors.white.withOpacity(0.3), width: 1, ), ), child: const Icon( Icons.notifications_outlined, color: Colors.white, size: 24, ), ), ], ), ), Positioned( bottom: 80, left: 24, right: 24, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ const Icon( Icons.location_on, color: Colors.white, size: 16, ), const SizedBox(width: 4), const Text( 'dans mon ventre', style: TextStyle( color: Colors.white, fontSize: 14, fontWeight: FontWeight.w500, ), ), ], ), const SizedBox(height: 8), Text( 'Notre poisson rouge', style: Theme.of(context).textTheme.headlineLarge, ), const SizedBox(height: 8), Row( children: [ const Icon( Icons.star, color: AppTheme.accentColor, size: 18, ), const SizedBox(width: 4), const Text( '4/5', style: TextStyle( color: Colors.white, fontSize: 16, fontWeight: FontWeight.w600, ), ), const SizedBox(width: 8), Text( '(500+ Review)', style: TextStyle( color: Colors.white.withOpacity(0.8), fontSize: 14, fontWeight: FontWeight.w400, ), ), ], ), ], ), ), Positioned( bottom: 20, left: 15, right: 15, child: Container( padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 4), decoration: BoxDecoration( color: Colors.white.withOpacity(0.2), borderRadius: BorderRadius.circular(16), border: Border.all( color: Colors.white.withOpacity(0.3), width: 1, ), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.2), blurRadius: 10, offset: const Offset(0, 4), ), ], ), child: Row( children: [ Icon( Icons.search, color: Colors.white, size: 24, ), const SizedBox(width: 12), Expanded( child: Text( 'Search your destination...', style: Theme.of(context).textTheme.bodyLarge?.copyWith( color: Colors.white, ), ), ), Container( width: 40, height: 40, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(12), border: Border.all( color: Colors.white.withOpacity(0.3), width: 1, ), ), child: Icon( Icons.tune, color: Colors.black, size: 30, ), ), ], ), ), ), ], ), ); } }