feat: updated container management system with core models, providers, and UI pages

This commit is contained in:
ElPoyo
2026-05-26 21:34:35 +02:00
parent fb740d97a3
commit 64a9fe382a
13 changed files with 1363 additions and 797 deletions
@@ -36,12 +36,15 @@ class MonthView extends StatelessWidget {
return LayoutBuilder(
builder: (context, constraints) {
final rowCount = _computeRowCount(focusedDay);
// TableCalendar has internal vertical padding and margins (approx 16px) that cause overflow
// if not accounted for. We subtract an extra 16.0 pixels to be safe.
final availableHeight = constraints.maxHeight -
(_calendarPadding * 2) -
_headerHeight -
_headerVerticalPadding -
_daysOfWeekHeight;
final rowHeight = availableHeight / rowCount;
_daysOfWeekHeight -
16.0;
final rowHeight = (availableHeight > 0 ? availableHeight : 200.0) / rowCount;
return Container(
height: constraints.maxHeight,
@@ -40,7 +40,9 @@ class _EquipmentAssociatedEventsSectionState
}
Future<void> _loadEvents() async {
setState(() => _isLoading = true);
if (mounted) {
setState(() => _isLoading = true);
}
try {
// Récupérer TOUS les événements via l'API
@@ -128,12 +130,16 @@ class _EquipmentAssociatedEventsSectionState
// Trier par date
filteredEvents.sort((a, b) => a.startDateTime.compareTo(b.startDateTime));
setState(() {
_events = filteredEvents;
_isLoading = false;
});
if (mounted) {
setState(() {
_events = filteredEvents;
_isLoading = false;
});
}
} catch (e) {
setState(() => _isLoading = false);
if (mounted) {
setState(() => _isLoading = false);
}
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
@@ -207,7 +213,9 @@ class _EquipmentAssociatedEventsSectionState
],
),
onSelected: (filter) {
setState(() => _selectedFilter = filter);
if (mounted) {
setState(() => _selectedFilter = filter);
}
_loadEvents();
},
itemBuilder: (context) => EventFilter.values.map((filter) {
@@ -34,7 +34,9 @@ class _EquipmentCurrentEventsSectionState
}
Future<void> _loadCurrentEvents() async {
setState(() => _isLoading = true);
if (mounted) {
setState(() => _isLoading = true);
}
try {
// Récupérer TOUS les événements via l'API
@@ -106,12 +108,16 @@ class _EquipmentCurrentEventsSectionState
// Trier par date
events.sort((a, b) => a.startDateTime.compareTo(b.startDateTime));
setState(() {
_events = events;
_isLoading = false;
});
if (mounted) {
setState(() {
_events = events;
_isLoading = false;
});
}
} catch (e) {
setState(() => _isLoading = false);
if (mounted) {
setState(() => _isLoading = false);
}
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(