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>
50 lines
1.4 KiB
Dart
Executable File
50 lines
1.4 KiB
Dart
Executable File
import 'package:flutter/material.dart';
|
|
import 'package:geosector_app/presentation/widgets/backgrounds/dots_painter.dart';
|
|
|
|
/// Widget de fond dégradé avec points décoratifs
|
|
/// Utilisé comme fond pour les pages admin et user avec des couleurs différentes
|
|
class GradientBackground extends StatelessWidget {
|
|
/// Indique si le fond est pour un admin (rouge) ou user (vert)
|
|
final bool isAdmin;
|
|
|
|
/// Afficher ou non les points décoratifs
|
|
final bool showDots;
|
|
|
|
/// Opacité des points (0.0 à 1.0)
|
|
final double dotsOpacity;
|
|
|
|
const GradientBackground({
|
|
super.key,
|
|
required this.isAdmin,
|
|
this.showDots = true,
|
|
this.dotsOpacity = 0.5,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
// Couleurs de fond selon le rôle
|
|
final gradientColors = isAdmin
|
|
? [Colors.white, Colors.red.shade300] // Admin: dégradé rouge
|
|
: [Colors.white, Colors.green.shade300]; // User: dégradé vert
|
|
|
|
return Container(
|
|
decoration: BoxDecoration(
|
|
gradient: LinearGradient(
|
|
begin: Alignment.topCenter,
|
|
end: Alignment.bottomCenter,
|
|
colors: gradientColors,
|
|
),
|
|
),
|
|
child: showDots
|
|
? CustomPaint(
|
|
painter: DotsPainter(opacity: dotsOpacity),
|
|
child: const SizedBox(
|
|
width: double.infinity,
|
|
height: double.infinity,
|
|
),
|
|
)
|
|
: null,
|
|
);
|
|
}
|
|
}
|