Sélection de l'événement dans la vue semaine
This commit is contained in:
@ -149,6 +149,7 @@ class _CalendarPageState extends State<CalendarPage> {
|
||||
onEventSelected: (event) {
|
||||
setState(() {
|
||||
_selectedEvent = event;
|
||||
_selectedDay = event.startDateTime;
|
||||
});
|
||||
},
|
||||
onSwitchToMonth: () {
|
||||
@ -156,6 +157,33 @@ class _CalendarPageState extends State<CalendarPage> {
|
||||
_calendarFormat = CalendarFormat.month;
|
||||
});
|
||||
},
|
||||
onDaySelected: (selectedDay) {
|
||||
final eventsForDay = eventProvider.events
|
||||
.where((e) =>
|
||||
e.startDateTime.year == selectedDay.year &&
|
||||
e.startDateTime.month == selectedDay.month &&
|
||||
e.startDateTime.day == selectedDay.day)
|
||||
.toList();
|
||||
eventsForDay
|
||||
.sort((a, b) => a.startDateTime.compareTo(b.startDateTime));
|
||||
setState(() {
|
||||
_selectedDay = selectedDay;
|
||||
if (eventsForDay.isNotEmpty) {
|
||||
_selectedEvent = eventsForDay.first;
|
||||
} else {
|
||||
_selectedEvent = null;
|
||||
}
|
||||
});
|
||||
if (eventsForDay.isEmpty) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text("Aucun événement ne démarre à cette date."),
|
||||
duration: Duration(seconds: 2),
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
selectedEvent: _selectedEvent,
|
||||
);
|
||||
} else {
|
||||
return MonthView(
|
||||
|
@ -9,6 +9,8 @@ class WeekView extends StatelessWidget {
|
||||
final Function(int) onWeekChange;
|
||||
final Function(EventModel) onEventSelected;
|
||||
final Function() onSwitchToMonth;
|
||||
final Function(DateTime) onDaySelected;
|
||||
final EventModel? selectedEvent;
|
||||
|
||||
const WeekView({
|
||||
super.key,
|
||||
@ -17,6 +19,8 @@ class WeekView extends StatelessWidget {
|
||||
required this.onWeekChange,
|
||||
required this.onEventSelected,
|
||||
required this.onSwitchToMonth,
|
||||
required this.onDaySelected,
|
||||
required this.selectedEvent,
|
||||
});
|
||||
|
||||
@override
|
||||
@ -253,6 +257,8 @@ class WeekView extends StatelessWidget {
|
||||
final endHour = e.end.hour + e.end.minute / 60;
|
||||
final duration = endHour - startHour;
|
||||
final width = dayWidth / e.totalColumns;
|
||||
final isSelected =
|
||||
selectedEvent != null && e.event.id == selectedEvent!.id;
|
||||
|
||||
return Positioned(
|
||||
left: dayIdx * dayWidth + e.column * width,
|
||||
@ -265,8 +271,13 @@ class WeekView extends StatelessWidget {
|
||||
margin: const EdgeInsets.all(2),
|
||||
padding: const EdgeInsets.all(4),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.rouge.withAlpha(26),
|
||||
border: Border.all(color: AppColors.rouge),
|
||||
color: isSelected
|
||||
? AppColors.rouge.withAlpha(80)
|
||||
: AppColors.rouge.withAlpha(26),
|
||||
border: Border.all(
|
||||
color: AppColors.rouge,
|
||||
width: isSelected ? 3 : 1,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
),
|
||||
child: Column(
|
||||
|
Reference in New Issue
Block a user