refactoring and checkpoint

This commit is contained in:
DahoudG
2024-09-24 00:32:20 +00:00
parent dc73ba7dcc
commit 6b12cfeb41
159 changed files with 8119 additions and 1535 deletions

View File

@@ -1,117 +1,147 @@
import 'package:flutter/material.dart';
import '../../../core/constants/colors.dart';
class ProfileScreen extends StatelessWidget {
const ProfileScreen({super.key});
@override
Widget build(BuildContext context) {
print("Affichage de l'écran de profil.");
return Scaffold(
appBar: AppBar(
title: const Text('Profil',
style: TextStyle(
color: Color(0xFF1DBF73), // Définit la couleur verte du texte
),
),
backgroundColor: const Color(0xFF1E1E2C),
actions: [
IconButton(
icon: const Icon(Icons.settings, color: Colors.white),
onPressed: () {
// Naviguer vers la page des paramètres
},
),
],
),
body: ListView(
padding: const EdgeInsets.all(16.0),
children: [
_buildUserInfoCard(),
const SizedBox(height: 20),
_buildEditOptionsCard(),
const SizedBox(height: 20),
_buildStatisticsSectionCard(),
const SizedBox(height: 20),
_buildExpandableSectionCard(
title: 'Historique',
icon: Icons.history,
children: [
_buildAnimatedListTile(
icon: Icons.event_note,
label: 'Historique des Événements',
onTap: () {
// Naviguer vers l'historique des événements
},
backgroundColor: AppColors.backgroundColor,
body: CustomScrollView(
slivers: [
SliverAppBar(
expandedHeight: 200.0,
floating: false,
pinned: true,
backgroundColor: AppColors.darkPrimary,
flexibleSpace: FlexibleSpaceBar(
title: Text(
'Profil',
style: TextStyle(
color: AppColors.accentColor,
fontSize: 20.0,
fontWeight: FontWeight.bold,
),
),
_buildAnimatedListTile(
icon: Icons.history,
label: 'Historique des Publications',
onTap: () {
// Naviguer vers l'historique des publications
},
background: Image.asset(
'lib/assets/images/profile_picture.png',
fit: BoxFit.cover,
),
_buildAnimatedListTile(
icon: Icons.bookmark,
label: 'Historique de Réservations',
onTap: () {
// Naviguer vers l'historique des réservations
),
actions: [
IconButton(
icon: const Icon(Icons.settings, color: Colors.white),
onPressed: () {
print("Bouton des paramètres cliqué.");
// Logique de navigation vers les paramètres
},
),
],
),
const SizedBox(height: 20),
_buildExpandableSectionCard(
title: 'Préférences et Paramètres',
icon: Icons.settings,
children: [
_buildAnimatedListTile(
icon: Icons.privacy_tip,
label: 'Paramètres de confidentialité',
onTap: () {
// Naviguer vers les paramètres de confidentialité
},
),
_buildAnimatedListTile(
icon: Icons.notifications,
label: 'Notifications',
onTap: () {
// Naviguer vers les paramètres de notification
},
),
_buildAnimatedListTile(
icon: Icons.language,
label: 'Langue de l\'application',
onTap: () {
// Naviguer vers les paramètres de langue
},
),
_buildAnimatedListTile(
icon: Icons.format_paint,
label: 'Thème de l\'application',
onTap: () {
// Naviguer vers les paramètres de thème
},
),
],
SliverList(
delegate: SliverChildListDelegate(
[
const SizedBox(height: 10),
_buildUserInfoCard(),
const SizedBox(height: 10),
_buildEditOptionsCard(),
const SizedBox(height: 10),
_buildStatisticsSectionCard(),
const SizedBox(height: 10),
_buildExpandableSectionCard(
title: 'Historique',
icon: Icons.history,
children: [
_buildAnimatedListTile(
icon: Icons.event_note,
label: 'Historique des Événements',
onTap: () {
print("Accès à l'historique des événements.");
// Logique de navigation vers l'historique des événements
},
),
_buildAnimatedListTile(
icon: Icons.history,
label: 'Historique des Publications',
onTap: () {
print("Accès à l'historique des publications.");
// Logique de navigation vers l'historique des publications
},
),
_buildAnimatedListTile(
icon: Icons.bookmark,
label: 'Historique de Réservations',
onTap: () {
print("Accès à l'historique des réservations.");
// Logique de navigation vers l'historique des réservations
},
),
],
),
const SizedBox(height: 10),
_buildExpandableSectionCard(
title: 'Préférences et Paramètres',
icon: Icons.settings,
children: [
_buildAnimatedListTile(
icon: Icons.privacy_tip,
label: 'Paramètres de confidentialité',
onTap: () {
print("Accès aux paramètres de confidentialité.");
// Logique de navigation vers les paramètres de confidentialité
},
),
_buildAnimatedListTile(
icon: Icons.notifications,
label: 'Notifications',
onTap: () {
print("Accès aux paramètres de notifications.");
// Logique de navigation vers les notifications
},
),
_buildAnimatedListTile(
icon: Icons.language,
label: 'Langue de l\'application',
onTap: () {
print("Accès aux paramètres de langue.");
// Logique de navigation vers les paramètres de langue
},
),
_buildAnimatedListTile(
icon: Icons.format_paint,
label: 'Thème de l\'application',
onTap: () {
print("Accès aux paramètres de thème.");
// Logique de navigation vers les paramètres de thème
},
),
],
),
const SizedBox(height: 10),
_buildSupportSectionCard(),
const SizedBox(height: 10),
_buildAccountDeletionCard(context),
],
),
),
const SizedBox(height: 20),
_buildSupportSectionCard(),
const SizedBox(height: 20),
_buildAccountDeletionCard(context),
],
),
backgroundColor: const Color(0xFF1E1E2C),
);
}
Widget _buildUserInfoCard() {
return Card(
color: const Color(0xFF292B37),
color: AppColors.cardColor,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
elevation: 2,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
const CircleAvatar(
CircleAvatar(
radius: 50,
backgroundImage: AssetImage('lib/assets/images/profile_picture.png'),
backgroundColor: Colors.transparent,
@@ -152,29 +182,33 @@ class ProfileScreen extends StatelessWidget {
Widget _buildEditOptionsCard() {
return Card(
color: const Color(0xFF292B37),
color: AppColors.cardColor,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
elevation: 2,
child: Column(
children: [
_buildAnimatedListTile(
icon: Icons.edit,
label: 'Éditer le profil',
onTap: () {
// Naviguer vers la page d'édition de profil
print("Édition du profil.");
// Logique de navigation vers l'édition du profil
},
),
_buildAnimatedListTile(
icon: Icons.camera_alt,
label: 'Changer la photo de profil',
onTap: () {
// Naviguer vers la page de changement de photo de profil
print("Changement de la photo de profil.");
// Logique de changement de la photo de profil
},
),
_buildAnimatedListTile(
icon: Icons.lock,
label: 'Changer le mot de passe',
onTap: () {
// Naviguer vers la page de changement de mot de passe
print("Changement du mot de passe.");
// Logique de changement de mot de passe
},
),
],
@@ -184,8 +218,9 @@ class ProfileScreen extends StatelessWidget {
Widget _buildStatisticsSectionCard() {
return Card(
color: const Color(0xFF292B37),
color: AppColors.cardColor,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
elevation: 2,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
@@ -232,8 +267,9 @@ class ProfileScreen extends StatelessWidget {
required List<Widget> children,
}) {
return Card(
color: const Color(0xFF292B37),
color: AppColors.cardColor,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
elevation: 2,
child: ExpansionTile(
title: Text(
title,
@@ -243,9 +279,9 @@ class ProfileScreen extends StatelessWidget {
color: Colors.white,
),
),
leading: Icon(icon, color: const Color(0xFF1DBF73)),
iconColor: const Color(0xFF1DBF73),
collapsedIconColor: const Color(0xFF1DBF73),
leading: Icon(icon, color: AppColors.accentColor),
iconColor: AppColors.accentColor,
collapsedIconColor: AppColors.accentColor,
children: children,
),
);
@@ -253,8 +289,9 @@ class ProfileScreen extends StatelessWidget {
Widget _buildSupportSectionCard() {
return Card(
color: const Color(0xFF292B37),
color: AppColors.cardColor,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
elevation: 2,
child: Column(
children: [
const Padding(
@@ -272,21 +309,24 @@ class ProfileScreen extends StatelessWidget {
icon: Icons.help,
label: 'Support et Assistance',
onTap: () {
// Naviguer vers la page de support
print("Accès au Support et Assistance.");
// Logique de navigation vers le support
},
),
_buildAnimatedListTile(
icon: Icons.article,
label: 'Conditions d\'utilisation',
onTap: () {
// Naviguer vers les conditions d'utilisation
print("Accès aux conditions d'utilisation.");
// Logique de navigation vers les conditions d'utilisation
},
),
_buildAnimatedListTile(
icon: Icons.privacy_tip,
label: 'Politique de confidentialité',
onTap: () {
// Naviguer vers la politique de confidentialité
print("Accès à la politique de confidentialité.");
// Logique de navigation vers la politique de confidentialité
},
),
],
@@ -296,8 +336,9 @@ class ProfileScreen extends StatelessWidget {
Widget _buildAccountDeletionCard(BuildContext context) {
return Card(
color: const Color(0xFF292B37),
color: AppColors.cardColor,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
elevation: 2,
child: ListTile(
leading: const Icon(Icons.delete, color: Colors.redAccent),
title: const Text(
@@ -307,7 +348,6 @@ class ProfileScreen extends StatelessWidget {
onTap: () {
_showDeleteConfirmationDialog(context);
},
hoverColor: Colors.red.withOpacity(0.1),
),
);
}
@@ -317,7 +357,7 @@ class ProfileScreen extends StatelessWidget {
context: context,
builder: (BuildContext context) {
return AlertDialog(
backgroundColor: const Color(0xFF1E1E2C),
backgroundColor: AppColors.backgroundColor,
title: const Text(
'Confirmer la suppression',
style: TextStyle(color: Colors.white),
@@ -329,17 +369,17 @@ class ProfileScreen extends StatelessWidget {
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop(); // Fermer le popup
Navigator.of(context).pop();
},
child: const Text(
child: Text(
'Annuler',
style: TextStyle(color: Color(0xFF1DBF73)),
style: TextStyle(color: AppColors.accentColor),
),
),
TextButton(
onPressed: () {
// Logique de suppression du compte ici
Navigator.of(context).pop(); // Fermer le popup après la suppression
print("Suppression du compte confirmée.");
Navigator.of(context).pop();
},
child: const Text(
'Supprimer',
@@ -362,12 +402,11 @@ class ProfileScreen extends StatelessWidget {
borderRadius: BorderRadius.circular(10),
splashColor: Colors.blueAccent.withOpacity(0.2),
child: ListTile(
leading: Icon(icon, color: const Color(0xFF1DBF73)),
leading: Icon(icon, color: AppColors.accentColor),
title: Text(
label,
style: const TextStyle(color: Colors.white, fontWeight: FontWeight.w600),
),
hoverColor: Colors.blue.withOpacity(0.1),
),
);
}
@@ -378,7 +417,7 @@ class ProfileScreen extends StatelessWidget {
required String value,
}) {
return ListTile(
leading: Icon(icon, color: const Color(0xFF1DBF73)),
leading: Icon(icon, color: AppColors.accentColor),
title: Text(label, style: const TextStyle(color: Colors.white)),
trailing: Text(
value,
@@ -388,7 +427,6 @@ class ProfileScreen extends StatelessWidget {
fontSize: 16,
),
),
hoverColor: Colors.blue.withOpacity(0.1),
);
}
}