refactoring

This commit is contained in:
DahoudG
2024-09-01 04:08:50 +00:00
parent 7e1cb85160
commit a1fce6bf27
31 changed files with 1651 additions and 441 deletions

View File

@@ -1,6 +1,13 @@
import 'package:flutter/material.dart';
import 'package:afterwork/data/datasources/event_remote_data_source.dart';
/// Widget pour afficher une carte d'événement.
class EventCard extends StatelessWidget {
final String eventId;
final EventRemoteDataSource eventRemoteDataSource;
final String userId;
final String userName;
final String userLastName;
final String profileImage;
final String name;
final String datePosted;
@@ -19,6 +26,11 @@ class EventCard extends StatelessWidget {
const EventCard({
Key? key,
required this.eventId,
required this.eventRemoteDataSource,
required this.userId,
required this.userName,
required this.userLastName,
required this.profileImage,
required this.name,
required this.datePosted,
@@ -33,7 +45,7 @@ class EventCard extends StatelessWidget {
required this.onShare,
required this.onParticipate,
required this.onCloseEvent,
required this.onMoreOptions, required String assetImage,
required this.onMoreOptions,
}) : super(key: key);
@override
@@ -65,6 +77,7 @@ class EventCard extends StatelessWidget {
);
}
/// Construire l'en-tête de la carte avec les informations de l'utilisateur.
Widget _buildHeader() {
return Row(
children: [
@@ -94,16 +107,17 @@ class EventCard extends StatelessWidget {
),
IconButton(
icon: const Icon(Icons.more_vert, color: Colors.white),
onPressed: onMoreOptions,
onPressed: _onMoreOptions,
),
IconButton(
icon: const Icon(Icons.close, color: Colors.white),
onPressed: onCloseEvent,
onPressed: _onCloseEvent,
),
],
);
}
/// Afficher les détails de l'événement.
Widget _buildEventDetails() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -125,6 +139,7 @@ class EventCard extends StatelessWidget {
);
}
/// Afficher l'image de l'événement.
Widget _buildEventImage() {
return ClipRRect(
borderRadius: BorderRadius.circular(10.0),
@@ -134,6 +149,7 @@ class EventCard extends StatelessWidget {
width: double.infinity,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
print('Erreur de chargement de l\'image: $error');
return Image.asset(
'lib/assets/images/placeholder.png',
height: 180,
@@ -145,6 +161,7 @@ class EventCard extends StatelessWidget {
);
}
/// Afficher les icônes d'interaction (réagir, commenter, partager).
Widget _buildInteractionRow() {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
@@ -174,6 +191,7 @@ class EventCard extends StatelessWidget {
);
}
/// Bouton d'interaction personnalisé.
Widget _buildIconButton({
required IconData icon,
required String label,
@@ -192,9 +210,10 @@ class EventCard extends StatelessWidget {
);
}
/// Bouton pour participer à l'événement.
Widget _buildParticipateButton() {
return ElevatedButton(
onPressed: onParticipate,
onPressed: _onParticipate,
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFF1DBF73),
shape: RoundedRectangleBorder(
@@ -206,4 +225,54 @@ class EventCard extends StatelessWidget {
child: const Text('Participer', style: TextStyle(color: Colors.white)),
);
}
// Logique pour réagir à l'événement.
void _onReact() async {
try {
print('Tentative de réaction à l\'événement $eventId par l\'utilisateur $userId');
await eventRemoteDataSource.reactToEvent(eventId, userId);
print('Réaction à l\'événement réussie');
// Mettre à jour l'interface utilisateur, par exemple augmenter le compteur de réactions.
} catch (e) {
// Gérer l'erreur.
print('Erreur lors de la réaction à l\'événement: $e');
}
}
// Logique pour commenter l'événement.
void _onComment() {
// Implémenter la logique pour commenter un événement.
print('Commentaire sur l\'événement $eventId par l\'utilisateur $userId');
}
// Logique pour partager l'événement.
void _onShare() {
// Implémenter la logique pour partager un événement.
print('Partage de l\'événement $eventId par l\'utilisateur $userId');
}
// Logique pour participer à l'événement.
void _onParticipate() async {
try {
print('Tentative de participation à l\'événement $eventId par l\'utilisateur $userId');
await eventRemoteDataSource.participateInEvent(eventId, userId);
print('Participation à l\'événement réussie');
// Mettre à jour l'interface utilisateur, par exemple afficher un message de succès.
} catch (e) {
// Gérer l'erreur.
print('Erreur lors de la participation à l\'événement: $e');
}
}
// Logique pour fermer l'événement.
void _onCloseEvent() {
// Implémenter la logique pour fermer un événement.
print('Fermeture de l\'événement $eventId');
}
// Logique pour afficher plus d'options.
void _onMoreOptions() {
// Implémenter la logique pour afficher plus d'options.
print('Affichage des options supplémentaires pour l\'événement $eventId');
}
}