feat: updated container management system with core models, providers, and UI pages
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user