Ajout de la date de l'événement et des boutons suivant et précédents

This commit is contained in:
2025-05-22 12:03:42 +02:00
parent 6adc90ecfe
commit 64e5eddfd5
3 changed files with 101 additions and 11 deletions

View File

@ -71,6 +71,7 @@ class _CalendarPageState extends State<CalendarPage> {
}
Widget _buildDesktopLayout() {
final eventProvider = Provider.of<EventProvider>(context);
return Row(
children: [
// Calendrier (65% de la largeur)
@ -82,7 +83,17 @@ class _CalendarPageState extends State<CalendarPage> {
Expanded(
flex: 35,
child: _selectedEvent != null
? EventDetails(event: _selectedEvent!)
? EventDetails(
event: _selectedEvent!,
selectedDate: _selectedDay,
events: eventProvider.events,
onSelectEvent: (event, date) {
setState(() {
_selectedEvent = event;
_selectedDay = date;
});
},
)
: const Center(
child:
Text('Sélectionnez un événement pour voir les détails'),
@ -93,6 +104,7 @@ class _CalendarPageState extends State<CalendarPage> {
}
Widget _buildMobileLayout() {
final eventProvider = Provider.of<EventProvider>(context);
return Column(
children: [
// Calendrier
@ -102,7 +114,17 @@ class _CalendarPageState extends State<CalendarPage> {
// Détails de l'événement
if (_selectedEvent != null)
Expanded(
child: EventDetails(event: _selectedEvent!),
child: EventDetails(
event: _selectedEvent!,
selectedDate: _selectedDay,
events: eventProvider.events,
onSelectEvent: (event, date) {
setState(() {
_selectedEvent = event;
_selectedDay = date;
});
},
),
),
],
);

View File

@ -124,24 +124,43 @@ class MonthView extends StatelessWidget {
selectedBuilder: (context, day, focusedDay) {
return _buildDayCell(day, true);
},
todayBuilder: (context, day, focusedDay) {
return _buildDayCell(day, false, isToday: true);
},
);
}
Widget _buildDayCell(DateTime day, bool isSelected) {
Widget _buildDayCell(DateTime day, bool isSelected, {bool isToday = false}) {
final dayEvents = CalendarUtils.getEventsForDay(day, events);
final textColor = isSelected ? Colors.white : null;
final textColor =
isSelected ? Colors.white : (isToday ? AppColors.rouge : null);
final badgeColor = isSelected ? Colors.white : AppColors.rouge;
final badgeTextColor = isSelected ? AppColors.rouge : Colors.white;
BoxDecoration decoration;
if (isSelected) {
decoration = BoxDecoration(
color: AppColors.rouge,
border: Border.all(color: AppColors.rouge),
borderRadius: BorderRadius.circular(4),
);
} else if (isToday) {
decoration = BoxDecoration(
color: AppColors.rouge.withAlpha(26),
border: Border.all(color: AppColors.rouge),
borderRadius: BorderRadius.circular(4),
);
} else {
decoration = BoxDecoration(
color: null,
border: Border.all(color: Colors.grey.shade300),
borderRadius: BorderRadius.circular(4),
);
}
return Container(
margin: const EdgeInsets.all(4),
decoration: BoxDecoration(
color: isSelected ? AppColors.rouge : null,
border: Border.all(
color: isSelected ? AppColors.rouge : Colors.grey.shade300,
),
borderRadius: BorderRadius.circular(4),
),
decoration: decoration,
child: Stack(
children: [
Positioned(