114 lines
4.8 KiB
Dart
114 lines
4.8 KiB
Dart
import "package:flutter/material.dart";
|
|
import "package:google_fonts/google_fonts.dart";
|
|
import "../theme/ensup_colors.dart";
|
|
import "../widgets/ensup_top_bar.dart";
|
|
import "../widgets/profile_card.dart";
|
|
import "../widgets/action_card.dart";
|
|
import "../widgets/brand_corners.dart";
|
|
import "catalogue_screen.dart";
|
|
import "restitution_select_screen.dart";
|
|
|
|
/// Écran d'accueil étudiant : profil + choix Emprunter / Restituer.
|
|
class HomeScreen extends StatelessWidget {
|
|
const HomeScreen({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
backgroundColor: EnsupColors.soft,
|
|
body: Stack(
|
|
children: [
|
|
Center(
|
|
child: ConstrainedBox(
|
|
constraints: const BoxConstraints(maxWidth: 1280, maxHeight: 820),
|
|
child: Container(
|
|
margin: const EdgeInsets.all(24),
|
|
decoration: BoxDecoration(
|
|
color: Colors.white,
|
|
borderRadius: BorderRadius.circular(16),
|
|
boxShadow: [
|
|
BoxShadow(
|
|
color: EnsupColors.text.withValues(alpha: 0.14),
|
|
blurRadius: 60,
|
|
offset: const Offset(0, 18),
|
|
),
|
|
],
|
|
),
|
|
clipBehavior: Clip.antiAlias,
|
|
child: Column(
|
|
children: [
|
|
EnsupTopBar(
|
|
campusTag: "Paris · Ensitech",
|
|
userName: "Lucas Martin",
|
|
userInitials: "LM",
|
|
onBack: () => Navigator.of(context).pop(),
|
|
),
|
|
Expanded(
|
|
child: SingleChildScrollView(
|
|
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 28),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
const ProfileCard(
|
|
name: "Lucas Martin",
|
|
subtitle: "Étudiant · BTS SIO 2ème année · Ensitech Paris",
|
|
initials: "LM",
|
|
),
|
|
const SizedBox(height: 24),
|
|
Text(
|
|
"Que souhaitez-vous faire ?",
|
|
style: GoogleFonts.darkerGrotesque(
|
|
fontSize: 28,
|
|
fontWeight: FontWeight.w900,
|
|
color: EnsupColors.text,
|
|
),
|
|
),
|
|
const SizedBox(height: 18),
|
|
IntrinsicHeight(
|
|
child: Row(
|
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
|
children: [
|
|
Expanded(
|
|
child: ActionCard(
|
|
icon: Icons.inventory_2_outlined,
|
|
title: "EMPRUNTER",
|
|
description:
|
|
"Accéder au catalogue et emprunter du matériel éducatif",
|
|
color: EnsupColors.cyan,
|
|
onTap: () => Navigator.of(context).push(
|
|
MaterialPageRoute(builder: (_) => const CatalogueScreen()),
|
|
),
|
|
),
|
|
),
|
|
const SizedBox(width: 16),
|
|
Expanded(
|
|
child: ActionCard(
|
|
icon: Icons.assignment_return_outlined,
|
|
title: "RESTITUER",
|
|
description:
|
|
"Restituer un matériel que vous avez emprunté",
|
|
color: EnsupColors.teal,
|
|
onTap: () => Navigator.of(context).push(
|
|
MaterialPageRoute(builder: (_) => const RestitutionSelectScreen()),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
const Positioned.fill(child: BrandCorners()),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|