From 6059f64999694580c567c855d55c2f012bcf3638 Mon Sep 17 00:00:00 2001 From: DahoudG Date: Tue, 27 Aug 2024 21:21:33 +0000 Subject: [PATCH] Refactoring --- .../screens/event/event_screen.dart | 186 ++++++++++++++---- 1 file changed, 151 insertions(+), 35 deletions(-) diff --git a/lib/presentation/screens/event/event_screen.dart b/lib/presentation/screens/event/event_screen.dart index f2f695c..a881064 100644 --- a/lib/presentation/screens/event/event_screen.dart +++ b/lib/presentation/screens/event/event_screen.dart @@ -7,47 +7,163 @@ class EventScreen extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title: const Text('Créer un Événement'), - backgroundColor: Colors.blueAccent, + title: const Text('Événements'), + backgroundColor: const Color(0xFF1E1E2C), + actions: [ + IconButton( + icon: const Icon(Icons.add_circle_outline, size: 28, color: Color(0xFF1DBF73)), + onPressed: () { + // Logique pour ajouter un nouvel événement + }, + ), + ], ), - body: Padding( + body: ListView.builder( padding: const EdgeInsets.all(16.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text( - 'Titre de l\'événement', - style: TextStyle(fontSize: 18, color: Colors.white), + itemCount: 10, // Remplacez par le nombre réel d'événements + itemBuilder: (context, index) { + return Card( + color: const Color(0xFF2C2C3E), + margin: const EdgeInsets.symmetric(vertical: 10.0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15.0), ), - const SizedBox(height: 8), - TextField( - decoration: InputDecoration( - hintText: 'Entrez le titre de l\'événement', - filled: true, - fillColor: Colors.white.withOpacity(0.1), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(10.0), - borderSide: BorderSide.none, - ), - hintStyle: const TextStyle(color: Colors.white70), + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Row( + children: [ + CircleAvatar( + backgroundImage: NetworkImage( + 'https://example.com/profile_picture.png', // Remplacez par l'URL réelle de l'image de profil + ), + radius: 25, + ), + SizedBox(width: 10), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Nom Prénom', // Remplacez par le nom réel + style: TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.bold), + ), + Text( + 'Posté le 24/08/2024', // Remplacez par la date réelle + style: TextStyle(color: Colors.white70, fontSize: 14), + ), + ], + ), + ], + ), + const SizedBox(height: 10), + const Text( + 'Titre de l\'événement', // Remplacez par le titre réel + style: TextStyle(color: Colors.white, fontSize: 18, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 5), + const Text( + 'Description détaillée de l\'événement...', // Remplacez par la description réelle + style: TextStyle(color: Colors.white70, fontSize: 14), + ), + const SizedBox(height: 10), + ClipRRect( + borderRadius: BorderRadius.circular(10.0), + child: Image.network( + 'https://example.com/event_image.png', // Remplacez par l'URL réelle de l'image de l'événement + height: 180, + width: double.infinity, + fit: BoxFit.cover, + errorBuilder: (context, error, stackTrace) { + return Image.asset( + 'lib/assets/images/placeholder.png', // Chemin vers une image de remplacement locale + height: 180, + width: double.infinity, + fit: BoxFit.cover, + ); + }, + ), + ), + const SizedBox(height: 10), + Divider(color: Colors.white.withOpacity(0.2)), // Ligne de séparation discrète + Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + _buildIconButton( + icon: Icons.thumb_up_alt_outlined, + label: 'Réagir', + count: 120, // Remplacez par le nombre réel de j'aimes + onPressed: () { + // Logique pour réagir à l'événement + }, + ), + _buildIconButton( + icon: Icons.comment_outlined, + label: 'Commenter', + count: 45, // Remplacez par le nombre réel de commentaires + onPressed: () { + // Logique pour commenter l'événement + }, + ), + _buildIconButton( + icon: Icons.share_outlined, + label: 'Partager', + count: 30, // Remplacez par le nombre réel de partages + onPressed: () { + // Logique pour partager l'événement + }, + ), + ], + ), + ), + const SizedBox(height: 10), + ElevatedButton( + onPressed: () { + // Logique pour participer à l'événement + }, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFF1DBF73), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + padding: const EdgeInsets.symmetric(vertical: 12.0), + minimumSize: const Size(double.infinity, 40), + ), + child: const Text('Participer', style: TextStyle(color: Colors.white)), + ), + ], ), - style: const TextStyle(color: Colors.white), ), - const SizedBox(height: 20), - ElevatedButton( - onPressed: () { - // Logique pour créer l'événement - }, - style: ElevatedButton.styleFrom( - backgroundColor: Colors.blueAccent, - padding: const EdgeInsets.all(16.0), - ), - child: const Text('Créer l\'événement'), - ), - ], - ), + ); + }, + ), + backgroundColor: const Color(0xFF1E1E2C), + ); + } + + Widget _buildIconButton({ + required IconData icon, + required String label, + required int count, + required VoidCallback onPressed, + }) { + return Container( + margin: const EdgeInsets.only(right: 8.0), // Espacement entre les boutons + child: Column( + children: [ + IconButton( + icon: Icon(icon, color: const Color(0xFF1DBF73), size: 20), + onPressed: onPressed, + ), + Text( + '$label ($count)', + style: const TextStyle(color: Colors.white70, fontSize: 12), + ), + ], ), - backgroundColor: Colors.black, ); } }