import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:em2rp/providers/users_provider.dart'; class ProfilePictureWidget extends StatefulWidget { final String? userId; final double radius; final String? defaultImageUrl; final String? profilePhotoUrl; // URL directe de la photo (optionnel) const ProfilePictureWidget({ super.key, this.userId, this.radius = 20, this.defaultImageUrl, this.profilePhotoUrl, // Si fourni, utilisé directement sans appeler UsersProvider }); @override State createState() => _ProfilePictureWidgetState(); } class _ProfilePictureWidgetState extends State { @override Widget build(BuildContext context) { // Si profilePhotoUrl est fourni directement, l'utiliser sans appeler le provider if (widget.profilePhotoUrl != null && widget.profilePhotoUrl!.isNotEmpty) { return CircleAvatar( radius: widget.radius, backgroundImage: CachedNetworkImageProvider(widget.profilePhotoUrl!), onBackgroundImageError: (_, __) { // En cas d'erreur, afficher l'image par défaut }, ); } if (widget.userId == null || widget.userId!.isEmpty) { return _buildDefaultAvatar(widget.radius, widget.defaultImageUrl); } // Utiliser le provider pour récupérer l'utilisateur final usersProvider = context.watch(); final user = usersProvider.getUserById(widget.userId!); if (user == null) { return _buildDefaultAvatar(widget.radius, widget.defaultImageUrl); } final profilePhotoUrl = user.profilePhotoUrl; if (profilePhotoUrl.isEmpty) { return _buildDefaultAvatar(widget.radius, widget.defaultImageUrl); } return CircleAvatar( radius: widget.radius, backgroundImage: CachedNetworkImageProvider(profilePhotoUrl), onBackgroundImageError: (_, __) { // En cas d'erreur, afficher l'image par défaut }, ); } Widget _buildDefaultAvatar(double radius, String? defaultImageUrl) { return CircleAvatar( radius: radius, backgroundImage: defaultImageUrl != null && defaultImageUrl.isNotEmpty ? CachedNetworkImageProvider(defaultImageUrl) : null, child: defaultImageUrl == null || defaultImageUrl.isEmpty ? Icon(Icons.person, size: radius) : null, ); } }