feat: synchronisation mode deconnecte fin chat et stats

This commit is contained in:
2025-08-31 18:21:20 +02:00
parent 41a4505b4b
commit 604294af96
149 changed files with 285769 additions and 250633 deletions

View File

@@ -356,11 +356,25 @@ class _ResponsiveNavigationState extends State<ResponsiveNavigation> {
Widget _buildNavItem(int index, String title, Widget icon) {
final theme = Theme.of(context);
final isSelected = widget.selectedIndex == index;
final IconData? iconData = (icon is Icon) ? (icon).icon : null;
// Définir les couleurs selon le rôle (admin = rouge, user = vert)
final Color selectedColor = widget.isAdmin ? Colors.red : Colors.green;
final Color unselectedColor = theme.colorScheme.onSurface.withOpacity(0.6);
// Gérer le cas où l'icône est un BadgedIcon ou autre widget composite
Widget iconWidget;
if (icon is Icon) {
// Si c'est une Icon simple, on peut appliquer les couleurs
iconWidget = Icon(
icon.icon,
color: isSelected ? selectedColor : unselectedColor,
size: 24,
);
} else {
// Si c'est un BadgedIcon ou autre widget, on le garde tel quel
// Le BadgedIcon gère ses propres couleurs
iconWidget = icon;
}
// Remplacer certains titres si l'interface est de type "user"
String displayTitle = title;
@@ -391,13 +405,7 @@ class _ResponsiveNavigationState extends State<ResponsiveNavigation> {
: Colors.transparent,
borderRadius: BorderRadius.circular(8),
),
child: iconData != null
? Icon(
iconData,
color: isSelected ? selectedColor : unselectedColor,
size: 24,
)
: icon,
child: Center(child: iconWidget),
),
),
),
@@ -405,12 +413,7 @@ class _ResponsiveNavigationState extends State<ResponsiveNavigation> {
} else {
// Version normale avec texte et icône
return ListTile(
leading: iconData != null
? Icon(
iconData,
color: isSelected ? selectedColor : unselectedColor,
)
: icon,
leading: iconWidget,
title: Text(
displayTitle,
style: TextStyle(
@@ -432,8 +435,6 @@ class _ResponsiveNavigationState extends State<ResponsiveNavigation> {
class _SettingsItem extends StatelessWidget {
final IconData icon;
final String title;
final String? subtitle;
final Widget? trailing;
final VoidCallback onTap;
final bool isSidebarMinimized;
@@ -442,8 +443,6 @@ class _SettingsItem extends StatelessWidget {
required this.title,
required this.onTap,
required this.isSidebarMinimized,
this.subtitle,
this.trailing,
});
@override
@@ -482,8 +481,6 @@ class _SettingsItem extends StatelessWidget {
color: theme.colorScheme.primary,
),
title: Text(title),
subtitle: subtitle != null ? Text(subtitle!) : null,
trailing: trailing,
onTap: onTap,
);
}