feat(frontend): add responsable dashboard screen

This commit is contained in:
SaidSoighiri94
2026-07-17 11:55:44 +02:00
parent 736328c66b
commit 2a1281b0e5
5 changed files with 693 additions and 20 deletions
+54 -14
View File
@@ -6,6 +6,7 @@ import "../widgets/ensup_top_bar.dart";
import "../widgets/identification_option.dart";
import "../widgets/brand_corners.dart";
import "home_screen.dart";
import "responsable_screen.dart";
/// Écran de démarrage : identification de l'étudiant (RG01/RG02).
class LoginScreen extends StatelessWidget {
@@ -60,7 +61,10 @@ class LoginScreen extends StatelessWidget {
),
child: Center(
child: SingleChildScrollView(
padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 40),
padding: const EdgeInsets.symmetric(
horizontal: 28,
vertical: 40,
),
child: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 560),
child: Column(
@@ -71,18 +75,27 @@ class LoginScreen extends StatelessWidget {
height: 72,
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [EnsupColors.blue3, EnsupColors.cyan],
colors: [
EnsupColors.blue3,
EnsupColors.cyan,
],
),
borderRadius: BorderRadius.circular(22),
boxShadow: [
BoxShadow(
color: EnsupColors.blue3.withValues(alpha: 0.35),
color: EnsupColors.blue3.withValues(
alpha: 0.35,
),
blurRadius: 24,
offset: const Offset(0, 8),
),
],
),
child: const Icon(Icons.badge_outlined, color: Colors.white, size: 34),
child: const Icon(
Icons.badge_outlined,
color: Colors.white,
size: 34,
),
),
const SizedBox(height: 20),
Text(
@@ -115,16 +128,22 @@ class LoginScreen extends StatelessWidget {
IdentificationOption(
icon: Icons.mail_outline,
iconColor: EnsupColors.teal,
label: "Connexion compte professionnel ENSUP",
description: "Utiliser mon adresse e-mail Microsoft 365",
label:
"Connexion compte professionnel ENSUP",
description:
"Utiliser mon adresse e-mail Microsoft 365",
onTap: () => _identifier(context),
),
const SizedBox(height: 20),
Row(
children: [
const Expanded(child: Divider(color: EnsupColors.line)),
const Expanded(
child: Divider(color: EnsupColors.line),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
padding: const EdgeInsets.symmetric(
horizontal: 12,
),
child: Text(
"ou",
style: GoogleFonts.titilliumWeb(
@@ -133,15 +152,29 @@ class LoginScreen extends StatelessWidget {
),
),
),
const Expanded(child: Divider(color: EnsupColors.line)),
const Expanded(
child: Divider(color: EnsupColors.line),
),
],
),
const SizedBox(height: 20),
SizedBox(
width: double.infinity,
child: OutlinedButton.icon(
onPressed: () {},
icon: const Icon(Icons.person_outline, size: 16),
onPressed: () =>
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) =>
const ResponsableScreen(),
settings: const RouteSettings(
name: "responsable",
),
),
),
icon: const Icon(
Icons.person_outline,
size: 16,
),
label: Text(
"Accès responsable matériel",
style: GoogleFonts.darkerGrotesque(
@@ -151,10 +184,17 @@ class LoginScreen extends StatelessWidget {
),
style: OutlinedButton.styleFrom(
foregroundColor: EnsupColors.text2,
side: const BorderSide(color: EnsupColors.line, width: 1.5),
padding: const EdgeInsets.symmetric(vertical: 14),
side: const BorderSide(
color: EnsupColors.line,
width: 1.5,
),
padding: const EdgeInsets.symmetric(
vertical: 14,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
borderRadius: BorderRadius.circular(
10,
),
),
),
),