diff --git a/eme-frontend/lib/screens/home_screen.dart b/eme-frontend/lib/screens/home_screen.dart index eefa8f9..2d276bd 100644 --- a/eme-frontend/lib/screens/home_screen.dart +++ b/eme-frontend/lib/screens/home_screen.dart @@ -41,10 +41,11 @@ class HomeScreen extends StatelessWidget { clipBehavior: Clip.antiAlias, child: Column( children: [ - const EnsupTopBar( + EnsupTopBar( campusTag: "Paris · Ensitech", userName: "Lucas Martin", userInitials: "LM", + onBack: () => Navigator.of(context).pop(), ), Expanded( child: SingleChildScrollView( diff --git a/eme-frontend/lib/widgets/ensup_top_bar.dart b/eme-frontend/lib/widgets/ensup_top_bar.dart index 9b6b74c..fd3ccf5 100644 --- a/eme-frontend/lib/widgets/ensup_top_bar.dart +++ b/eme-frontend/lib/widgets/ensup_top_bar.dart @@ -2,8 +2,8 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; import "../theme/ensup_colors.dart"; -/// Barre supérieure ENSUP. L'utilisateur est optionnel (absent sur l'écran -/// d'identification, présent une fois l'étudiant connecté). +/// Barre supérieure ENSUP. L'utilisateur et le bouton retour sont optionnels +/// (absents sur l'écran d'identification). class EnsupTopBar extends StatelessWidget { const EnsupTopBar({ super.key, @@ -11,27 +11,34 @@ class EnsupTopBar extends StatelessWidget { required this.campusTag, this.userName, this.userInitials, + this.onBack, }); final String brandText; final String campusTag; final String? userName; final String? userInitials; + final VoidCallback? onBack; @override Widget build(BuildContext context) { final name = userName; final initials = userInitials; + final onBack = this.onBack; return Container( height: 56, - padding: const EdgeInsets.symmetric(horizontal: 28), + padding: const EdgeInsets.symmetric(horizontal: 20), color: EnsupColors.blue3, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ + if (onBack != null) ...[ + _BackButton(onTap: onBack), + const SizedBox(width: 8), + ], const Icon(Icons.badge_outlined, color: Colors.white, size: 18), const SizedBox(width: 10), Text( @@ -84,6 +91,38 @@ class EnsupTopBar extends StatelessWidget { } } +class _BackButton extends StatelessWidget { + const _BackButton({required this.onTap}); + + final VoidCallback onTap; + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(8), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.arrow_back, size: 16, color: Colors.white.withValues(alpha: 0.85)), + const SizedBox(width: 6), + Text( + "Retour", + style: GoogleFonts.titilliumWeb( + color: Colors.white.withValues(alpha: 0.85), + fontSize: 13, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), + ); + } +} + class _Avatar extends StatelessWidget { const _Avatar({required this.initials});