Files
afterwork/lib/presentation/screens/home/home_content.dart
2024-09-24 00:32:20 +00:00

164 lines
5.7 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import '../../../core/constants/colors.dart'; // Importez les couleurs dynamiques
import '../../widgets/friend_suggestions.dart';
import '../../widgets/group_list.dart';
import '../../widgets/popular_activity_list.dart';
import '../../widgets/quick_action_button.dart';
import '../../widgets/recommended_event_list.dart';
import '../../widgets/section_header.dart';
import '../../widgets/story_section.dart';
class HomeContentScreen extends StatelessWidget {
const HomeContentScreen({super.key});
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
return SingleChildScrollView(
padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 15.0), // Marges réduites
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Section de bienvenue
_buildWelcomeCard(),
const SizedBox(height: 15), // Espacement vertical réduit
// Section "Moments populaires"
_buildCard(
context: context,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SectionHeader(
title: 'Moments populaires',
icon: Icons.camera_alt,
textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.w500), // Taille ajustée
),
const SizedBox(height: 10), // Espace vertical réduit
StorySection(size: size),
],
),
),
const SizedBox(height: 15), // Espacement réduit
// Section des événements recommandés
_buildCard(
context: context,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SectionHeader(
title: 'Événements recommandés',
icon: Icons.star,
textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.w500),
),
const SizedBox(height: 10), // Espacement réduit
RecommendedEventList(size: size),
],
),
),
const SizedBox(height: 15), // Espacement réduit
// Section des activités populaires
_buildCard(
context: context,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SectionHeader(
title: 'Activités populaires',
icon: Icons.local_activity,
textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.w500),
),
const SizedBox(height: 10), // Espacement réduit
PopularActivityList(size: size),
],
),
),
const SizedBox(height: 15), // Espacement réduit
// Section des groupes sociaux
_buildCard(
context: context,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SectionHeader(
title: 'Groupes à rejoindre',
icon: Icons.group_add,
textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.w500),
),
const SizedBox(height: 10), // Espacement réduit
GroupList(size: size),
],
),
),
const SizedBox(height: 15), // Espacement réduit
// Section des suggestions d'amis
_buildCard(
context: context,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SectionHeader(
title: 'Suggestions damis',
icon: Icons.person_add,
textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.w500),
),
const SizedBox(height: 10), // Espacement réduit
FriendSuggestions(size: size),
],
),
),
],
),
);
}
// Widget pour la carte de bienvenue
Widget _buildWelcomeCard() {
return Card(
elevation: 5,
color: AppColors.surface, // Utilisation de la couleur dynamique pour la surface
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'Bienvenue, Dahoud!',
style: TextStyle(
color: AppColors.textPrimary, // Texte dynamique
fontSize: 22, // Taille de police réduite
fontWeight: FontWeight.w600, // Poids de police ajusté
),
),
Icon(Icons.waving_hand, color: Colors.orange.shade300, size: 24), // Taille de l'icône ajustée
],
),
),
);
}
// Widget générique pour créer une carte design avec des espaces optimisés
Widget _buildCard({required BuildContext context, required Widget child}) {
return Card(
elevation: 3, // Réduction de l'élévation pour un look plus épuré
color: AppColors.surface, // Utilisation de la couleur dynamique pour la surface
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), // Coins légèrement arrondis
child: Padding(
padding: const EdgeInsets.all(12.0), // Padding interne réduit pour un contenu plus compact
child: child,
),
);
}
}