Files
geo/app/lib/presentation/widgets/backgrounds/gradient_background.dart
Pierre 1cdb4ec58c 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>
2026-01-26 15:27:54 +01:00

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,
);
}
}