refactor: Simplifier DashboardLayout/AppScaffold (tâche #74)

Centralisation et simplification de l'architecture de navigation :

CRÉATIONS :
- navigation_config.dart : Configuration centralisée de la navigation
  * Toutes les destinations (admin/user)
  * Logique de navigation (index → route)
  * Résolution inverse (route → index)
  * Titres et utilitaires

- backgrounds/dots_painter.dart : Painter de points décoratifs
  * Extrait depuis AppScaffold et AdminScaffold
  * Paramétrable (opacité, densité, seed)
  * Réutilisable

- backgrounds/gradient_background.dart : Fond dégradé
  * Gère les couleurs admin (rouge) / user (vert)
  * Option pour afficher/masquer les points
  * Widget indépendant

SIMPLIFICATIONS :
- app_scaffold.dart : 426 → 192 lignes (-55%)
  * Utilise NavigationConfig au lieu de NavigationHelper
  * Utilise GradientBackground au lieu de code dupliqué
  * Suppression de DotsPainter local

- dashboard_layout.dart : 140 → 77 lignes (-45%)
  * Suppression validations excessives (try/catch, vérifications)
  * Code épuré et plus lisible

SUPPRESSIONS :
- admin_scaffold.dart : Supprimé (207 lignes)
  * Obsolète depuis unification avec AppScaffold
  * Code dupliqué avec AppScaffold
  * AdminNavigationHelper fusionné dans NavigationConfig

RÉSULTATS :
- Avant : 773 lignes (AppScaffold + AdminScaffold + DashboardLayout)
- Après : 623 lignes (tout inclus)
- Réduction nette : -150 lignes (-19%)
- Architecture plus claire et maintenable
- Aucune duplication de code
- Navigation centralisée en un seul endroit

Résout tâche #74 du PLANNING-2026-Q1.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-26 15:27:54 +01:00
parent 7345cf805e
commit 1cdb4ec58c
6 changed files with 395 additions and 543 deletions

View File

@@ -0,0 +1,46 @@
import 'package:flutter/material.dart';
import 'dart:math' as math;
/// Painter pour dessiner des petits points blancs semi-transparents sur un fond
/// Utilisé pour créer un effet visuel subtil sur les fonds dégradés
class DotsPainter extends CustomPainter {
/// Opacité des points (0.0 à 1.0)
final double opacity;
/// Seed pour le générateur aléatoire (pour consistance du pattern)
final int seed;
/// Densité des points (nombre de pixels par point)
/// Plus la valeur est élevée, moins il y a de points
final int density;
const DotsPainter({
this.opacity = 0.5,
this.seed = 42,
this.density = 1500,
});
@override
void paint(Canvas canvas, Size size) {
final paint = Paint()
..color = Colors.white.withOpacity(opacity)
..style = PaintingStyle.fill;
final random = math.Random(seed);
final numberOfDots = (size.width * size.height) ~/ density;
for (int i = 0; i < numberOfDots; i++) {
final x = random.nextDouble() * size.width;
final y = random.nextDouble() * size.height;
final radius = 1.0 + random.nextDouble() * 2.0;
canvas.drawCircle(Offset(x, y), radius, paint);
}
}
@override
bool shouldRepaint(covariant DotsPainter oldDelegate) {
return oldDelegate.opacity != opacity ||
oldDelegate.seed != seed ||
oldDelegate.density != density;
}
}