Refactoring et amélioration de la création et l'affichage d'un évènement.
This commit is contained in:
@@ -5,11 +5,12 @@ import 'event_card.dart';
|
||||
import '../dialogs/add_event_dialog.dart';
|
||||
|
||||
/// Écran principal pour afficher les événements.
|
||||
class EventScreen extends StatelessWidget {
|
||||
class EventScreen extends StatefulWidget {
|
||||
final EventRemoteDataSource eventRemoteDataSource;
|
||||
final String userId;
|
||||
final String userName; // Nom de l'utilisateur
|
||||
final String userLastName; // Prénom de l'utilisateur
|
||||
|
||||
const EventScreen({
|
||||
Key? key,
|
||||
required this.eventRemoteDataSource,
|
||||
@@ -18,6 +19,19 @@ class EventScreen extends StatelessWidget {
|
||||
required this.userLastName,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
_EventScreenState createState() => _EventScreenState();
|
||||
}
|
||||
|
||||
class _EventScreenState extends State<EventScreen> {
|
||||
late Future<List<EventModel>> _eventsFuture;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_eventsFuture = widget.eventRemoteDataSource.getAllEvents();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@@ -37,9 +51,9 @@ class EventScreen extends StatelessWidget {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AddEventDialog(
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
userLastName: userLastName,
|
||||
userId: widget.userId,
|
||||
userName: widget.userName,
|
||||
userLastName: widget.userLastName,
|
||||
);
|
||||
},
|
||||
);
|
||||
@@ -47,11 +61,15 @@ class EventScreen extends StatelessWidget {
|
||||
if (eventData != null) {
|
||||
// Appeler l'API pour créer un nouvel événement.
|
||||
try {
|
||||
print('Tentative de création d\'un nouvel événement par l\'utilisateur $userId');
|
||||
await eventRemoteDataSource.createEvent(eventData as EventModel);
|
||||
print('Tentative de création d\'un nouvel événement par l\'utilisateur ${widget.userId}');
|
||||
await widget.eventRemoteDataSource.createEvent(eventData as EventModel);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Événement ajouté avec succès !')),
|
||||
);
|
||||
// Réactualiser la liste des événements après création
|
||||
setState(() {
|
||||
_eventsFuture = widget.eventRemoteDataSource.getAllEvents();
|
||||
});
|
||||
} catch (e) {
|
||||
print('Erreur lors de la création de l\'événement: $e');
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
@@ -64,7 +82,7 @@ class EventScreen extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
body: FutureBuilder<List<EventModel>>(
|
||||
future: eventRemoteDataSource.getAllEvents(),
|
||||
future: _eventsFuture,
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
@@ -86,17 +104,19 @@ class EventScreen extends StatelessWidget {
|
||||
print('Affichage de l\'événement ${event.id}');
|
||||
|
||||
return EventCard(
|
||||
eventRemoteDataSource: eventRemoteDataSource,
|
||||
userId: userId,
|
||||
key: ValueKey(event.id), // Pour une gestion correcte du Key dans l'animation
|
||||
eventRemoteDataSource: widget.eventRemoteDataSource,
|
||||
userId: widget.userId,
|
||||
eventId: event.id,
|
||||
userName: userName,
|
||||
userLastName: userLastName,
|
||||
userName: widget.userName,
|
||||
userLastName: widget.userLastName,
|
||||
profileImage: 'lib/assets/images/profile_picture.png',
|
||||
name: '$userName $userLastName',
|
||||
name: '${widget.userName} ${widget.userLastName}',
|
||||
datePosted: 'Posté le 24/08/2024',
|
||||
eventTitle: event.title,
|
||||
eventDescription: event.description,
|
||||
eventImageUrl: event.imageUrl ?? 'lib/assets/images/placeholder.png',
|
||||
eventStatus: event.status, // Ajouter le statut de l'événement ici
|
||||
reactionsCount: 120, // Exemple de valeur
|
||||
commentsCount: 45, // Exemple de valeur
|
||||
sharesCount: 30, // Exemple de valeur
|
||||
@@ -112,9 +132,7 @@ class EventScreen extends StatelessWidget {
|
||||
onParticipate: () {
|
||||
print('Participation à l\'événement ${event.id}');
|
||||
},
|
||||
onCloseEvent: () {
|
||||
print('Fermeture de l\'événement ${event.id}');
|
||||
},
|
||||
onCloseEvent: () => _onCloseEvent(context, event.id, index),
|
||||
onMoreOptions: () {
|
||||
print('Affichage des options pour l\'événement ${event.id}');
|
||||
},
|
||||
@@ -126,4 +144,30 @@ class EventScreen extends StatelessWidget {
|
||||
backgroundColor: const Color(0xFF1E1E2C),
|
||||
);
|
||||
}
|
||||
|
||||
/// Logique pour fermer un événement
|
||||
void _onCloseEvent(BuildContext context, String eventId, int index) async {
|
||||
try {
|
||||
print('Tentative de fermeture de l\'événement $eventId');
|
||||
await widget.eventRemoteDataSource.closeEvent(eventId);
|
||||
print('Événement fermé avec succès');
|
||||
|
||||
// Montrer un message de succès
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('L\'événement a été fermé avec succès.')),
|
||||
);
|
||||
|
||||
// Actualiser la liste des événements après fermeture avec un effet de fondu
|
||||
setState(() {
|
||||
_eventsFuture.then((events) {
|
||||
events.removeAt(index);
|
||||
});
|
||||
});
|
||||
} catch (e) {
|
||||
print('Erreur lors de la fermeture de l\'événement: $e');
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Erreur lors de la fermeture de l\'événement : $e')),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user