import 'package:flutter/material.dart'; import '../theme/app_theme.dart'; class PopularPlacesWidget extends StatelessWidget { const PopularPlacesWidget({super.key}); @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 8), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( 'Popular Place', style: Theme.of(context).textTheme.titleLarge?.copyWith( fontWeight: FontWeight.bold, ), ), Text( 'View all', style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: AppTheme.textSecondary, ), ), ], ), ), const SizedBox(height: 16), SizedBox( height: 200, child: ListView.builder( scrollDirection: Axis.horizontal, padding: const EdgeInsets.symmetric(horizontal: 8), itemCount: 5, itemBuilder: (context, index) { return _buildPlaceCard(context, index); }, ), ), ], ); } Widget _buildPlaceCard(BuildContext context, int index) { final places = [ { 'name': 'Poisson Rouge', 'location': 'Aquarium, France', 'imagePath': 'assets/images/fond1.webp', }, { 'name': 'Poisson Clown', 'location': 'Récif, Océan', 'imagePath': 'assets/images/poisson2.webp', }, { 'name': 'Poisson Angelfish', 'location': 'Caraïbes, Mer', 'imagePath': 'assets/images/poisson3.webp', }, { 'name': 'Poisson Tang', 'location': 'Pacifique, Océan', 'imagePath': 'assets/images/poisson4.webp', }, { 'name': 'Poisson Betta', 'location': 'Asie, Rivière', 'imagePath': 'assets/images/poisson5.webp', }, ]; final place = places[index]; return Container( width: 160, margin: const EdgeInsets.only(right: 16), decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.2), blurRadius: 10, offset: const Offset(0, 5), ), ], ), child: ClipRRect( borderRadius: BorderRadius.circular(20), child: Stack( children: [ Positioned.fill( child: Image.asset( place['imagePath'] as String, fit: BoxFit.cover, errorBuilder: (context, error, stackTrace) { return Container( decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Color(0xFF1E3A8A), Color(0xFF7C2D12), Color(0xFFDC2626), Color(0xFFF59E0B), ], ), ), ); }, ), ), Positioned.fill( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), gradient: LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ Colors.transparent, Colors.black.withOpacity(0.6), ], ), ), ), ), Positioned( bottom: 16, left: 16, right: 16, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( place['name'] as String, style: Theme.of(context).textTheme.titleLarge?.copyWith( color: Colors.white, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 4), Row( children: [ const Icon( Icons.location_on, color: Colors.white, size: 14, ), const SizedBox(width: 4), Expanded( child: Text( place['location'] as String, style: Theme.of(context).textTheme.bodySmall?.copyWith( color: Colors.white.withOpacity(0.9), ), ), ), ], ), ], ), ), ], ), ), ); } }