import 'package:flutter/material.dart'; /// [FriendCard] est un widget représentant une carte d'ami. /// Cette carte inclut l'image de l'ami, son nom, et un bouton qui permet /// d'interagir avec cette carte (via le `onTap`). /// /// Ce widget est conçu pour être utilisé dans des listes d'amis, comme /// dans la section "Mes Amis" de l'application. class FriendCard extends StatelessWidget { final String name; // Le nom de l'ami final String imageUrl; // URL de l'image de profil de l'ami final VoidCallback onTap; // Fonction callback exécutée lors d'un clic sur la carte /// Constructeur de [FriendCard] avec des paramètres obligatoires. const FriendCard({ Key? key, required this.name, required this.imageUrl, required this.onTap, }) : super(key: key); @override Widget build(BuildContext context) { return GestureDetector( onTap: () { // Lorsque l'utilisateur clique sur la carte, on déclenche la fonction onTap. debugPrint("[LOG] Carte de l'ami $name cliquée."); onTap(); // Exécuter le callback fourni }, child: Card( elevation: 4, // Élévation de la carte pour donner un effet d'ombre shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16.0)), // Bordure arrondie color: Colors.grey.shade800, // Couleur de fond de la carte child: Padding( padding: const EdgeInsets.all(12.0), // Padding interne pour espacer le contenu child: Row( children: [ // Image de profil de l'ami affichée sous forme de cercle Hero( tag: name, // Le tag Hero permet de créer une transition animée vers un autre écran. child: CircleAvatar( backgroundImage: NetworkImage(imageUrl), // Charger l'image depuis l'URL radius: 30, // Taille de l'avatar ), ), const SizedBox(width: 16), // Espacement entre l'image et le nom // Le nom de l'ami avec un texte en gras et blanc Expanded( child: Text( name, style: const TextStyle( fontSize: 18, // Taille de la police color: Colors.white, // Couleur du texte fontWeight: FontWeight.bold, // Style en gras ), ), ), // Icône de flèche indiquant que la carte est cliquable Icon(Icons.chevron_right, color: Colors.white70), ], ), ), ), ); } }