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:
46
app/lib/presentation/widgets/backgrounds/dots_painter.dart
Executable file
46
app/lib/presentation/widgets/backgrounds/dots_painter.dart
Executable 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user