Refactoring

This commit is contained in:
DahoudG
2024-08-27 21:21:33 +00:00
parent 8e0a005918
commit 6059f64999

View File

@@ -7,47 +7,163 @@ class EventScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: const Text('Créer un Événement'), title: const Text('Événements'),
backgroundColor: Colors.blueAccent, 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), padding: const EdgeInsets.all(16.0),
child: Column( itemCount: 10, // Remplacez par le nombre réel d'événements
crossAxisAlignment: CrossAxisAlignment.start, itemBuilder: (context, index) {
children: [ return Card(
const Text( color: const Color(0xFF2C2C3E),
'Titre de l\'événement', margin: const EdgeInsets.symmetric(vertical: 10.0),
style: TextStyle(fontSize: 18, color: Colors.white), shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
), ),
const SizedBox(height: 8), child: Padding(
TextField( padding: const EdgeInsets.all(12.0),
decoration: InputDecoration( child: Column(
hintText: 'Entrez le titre de l\'événement', crossAxisAlignment: CrossAxisAlignment.start,
filled: true, children: [
fillColor: Colors.white.withOpacity(0.1), const Row(
border: OutlineInputBorder( children: [
borderRadius: BorderRadius.circular(10.0), CircleAvatar(
borderSide: BorderSide.none, backgroundImage: NetworkImage(
), 'https://example.com/profile_picture.png', // Remplacez par l'URL réelle de l'image de profil
hintStyle: const TextStyle(color: Colors.white70), ),
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 backgroundColor: const Color(0xFF1E1E2C),
}, );
style: ElevatedButton.styleFrom( }
backgroundColor: Colors.blueAccent,
padding: const EdgeInsets.all(16.0), Widget _buildIconButton({
), required IconData icon,
child: const Text('Créer l\'événement'), 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,
); );
} }
} }