Modif user provider, ajout photo de profil

This commit is contained in:
PC-PAUL\paulf 2025-03-06 11:13:05 +01:00
parent e5f7d8d2fd
commit 611c95d73b
4 changed files with 27 additions and 35 deletions

View File

@ -5,38 +5,29 @@ class UserProvider extends ChangeNotifier {
String? _firstName; String? _firstName;
String? _lastName; String? _lastName;
String? _role; String? _role;
// String? _profilePictureUrl; String? _profilePictureUrl;
String? _email; String? _email;
// String? _phoneNumber; String? _phoneNumber;
String? get uid => _uid; String? get uid => _uid;
String? get firstName => _firstName; String? get firstName => _firstName;
String? get lastName => _lastName; String? get lastName => _lastName;
String? get role => _role; String? get role => _role;
// String? get profilePhotoUrl => _profilePictureUrl; String? get profilePhotoUrl => _profilePictureUrl;
String? get email => _email; String? get email => _email;
// String? get phoneNumber => _phoneNumber; String? get phoneNumber => _phoneNumber;
// void setUserData(Map<String, dynamic> userData, String uid) {
// _uid = uid;
// _firstName = userData['firstName'];
// _lastName = userData['lastName'];
// _role = userData['role'] ?? 'USER'; // Default role if not provided
// // _profilePictureUrl = userData['profilePhotoUrl'];
// _email = userData['email'];
// // _phoneNumber = userData['phoneNumber'];
// notifyListeners(); // Notify listeners that state has changed
// }
void setUserData(Map<String, dynamic> userData, String uid) { void setUserData(Map<String, dynamic> userData, String uid) {
_uid = uid; _uid = uid;
_firstName = userData['firstName']; _firstName = userData['firstName'];
_lastName = userData['lastName']; _lastName = userData['lastName'];
_role = userData['role'] ?? 'USER'; // Default role if not provided _role = userData['role'] ?? 'USER'; // Default role if not provided
if (userData['profilePhotoUrl'] != "") {
_profilePictureUrl = userData['profilePhotoUrl'];
}
_email = userData['email']; _email = userData['email'];
_phoneNumber = userData['phoneNumber'];
print("User data set: $_firstName $_lastName ($_email)"); notifyListeners(); // Notify listeners that state has changed
notifyListeners();
} }
void clearUserData() { void clearUserData() {
@ -44,9 +35,9 @@ class UserProvider extends ChangeNotifier {
_firstName = null; _firstName = null;
_lastName = null; _lastName = null;
_role = null; _role = null;
// _profilePictureUrl = null; _profilePictureUrl = null;
_email = null; _email = null;
// _phoneNumber = null; _phoneNumber = null;
notifyListeners(); notifyListeners();
} }
} }

View File

@ -124,7 +124,7 @@ class _LoginPageState extends State<LoginPage> {
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
flex: 6, flex: 6,
child: const ImageSectionWidget(), // Affiche l'image de gauche child: const BigLeftImageWidget(),
), ),
Expanded( Expanded(
flex: 4, flex: 4,

View File

@ -1,8 +1,8 @@
import 'package:em2rp/utils/colors.dart'; import 'package:em2rp/utils/colors.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ImageSectionWidget extends StatelessWidget { class BigLeftImageWidget extends StatelessWidget {
const ImageSectionWidget({super.key}); const BigLeftImageWidget({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -1,10 +1,9 @@
import 'package:em2rp/providers/user_provider.dart'; // Import UserProvider import 'package:em2rp/providers/user_provider.dart';
import 'package:em2rp/utils/colors.dart'; import 'package:em2rp/utils/colors.dart';
import 'package:em2rp/views/calendar_page.dart'; import 'package:em2rp/views/calendar_page.dart';
import 'package:em2rp/views/my_account_page.dart'; import 'package:em2rp/views/my_account_page.dart';
import 'package:em2rp/views/user_management_page.dart'; import 'package:em2rp/views/user_management_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// Import Provider
class MainDrawer extends StatelessWidget { class MainDrawer extends StatelessWidget {
final String currentPage; final String currentPage;
@ -20,7 +19,7 @@ class MainDrawer extends StatelessWidget {
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
children: <Widget>[ children: <Widget>[
DrawerHeader( DrawerHeader(
// Header du drawer amélioré // Header du drawer
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( image: DecorationImage(
image: AssetImage('assets/EM2_NsurB.jpg'), image: AssetImage('assets/EM2_NsurB.jpg'),
@ -36,16 +35,19 @@ class MainDrawer extends StatelessWidget {
alignment: Alignment.bottomLeft, alignment: Alignment.bottomLeft,
child: Column( child: Column(
// Use Column to arrange logo and user name // Use Column to arrange logo and user name
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start, // Align text to the left mainAxisAlignment: MainAxisAlignment.end,
mainAxisAlignment:
MainAxisAlignment.end, // Align content to the bottom
children: [ children: [
Image.asset('assets/EM2_NsurB.jpg', CircleAvatar(
height: 50), // Smaller logo in header radius: 25,
backgroundImage: NetworkImage(
userProvider.profilePhotoUrl ??
'https://firebasestorage.googleapis.com/v0/b/em2rp-951dc/o/EM2_NsurB.jpg?alt=media&token=530479c3-5f8c-413b-86a2-53ec4a4ed734', //TODO: Remplacer par logo EM2
),
),
const SizedBox(height: 8), const SizedBox(height: 8),
Text( Text(
'Bonjour, ${userProvider.firstName ?? 'Erreur'}', // Display user's first name from provider 'Bonjour, ${userProvider.firstName ?? 'Erreur'}',
style: TextStyle( style: TextStyle(
color: AppColors.blanc, color: AppColors.blanc,
fontSize: 18, fontSize: 18,
@ -107,7 +109,7 @@ class MainDrawer extends StatelessWidget {
title: const Text('Gestion des Utilisateurs'), title: const Text('Gestion des Utilisateurs'),
selected: currentPage == selected: currentPage ==
'/user_management', // Check if current page is UserManagementPage '/user_management', // Check if current page is UserManagementPage
selectedColor: AppColors.rouge, // Color when selected selectedColor: AppColors.rouge,
onTap: () { onTap: () {
Navigator.pop(context); // Ferme le drawer Navigator.pop(context); // Ferme le drawer
Navigator.pushReplacement( Navigator.pushReplacement(
@ -121,7 +123,6 @@ class MainDrawer extends StatelessWidget {
], ],
), ),
), ),
// Tu peux ajouter d'autres liens ici si besoin
], ],
), ),
); );