import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; import 'package:provider/provider.dart'; import '../../../assets/animations/friend_expanding_card.dart'; import '../../../data/providers/friends_provider.dart'; import '../../../domain/entities/friend.dart'; import '../../widgets/friend_detail_screen.dart'; import '../../widgets/friends_appbar.dart'; import '../../widgets/search_friends.dart'; class FriendsScreenWithProvider extends StatelessWidget { final Logger _logger = Logger(); // Logger pour une meilleure traçabilité @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.black, appBar: FriendsAppBar(), body: SafeArea( child: Column( children: [ const Padding( padding: EdgeInsets.all(8.0), child: SearchFriends(), ), Expanded( child: Consumer( builder: (context, friendsProvider, _) { final friends = friendsProvider.friendsList; if (friends.isEmpty) { _logger.i("[LOG] Aucun ami trouvé"); return const Center( child: Text( 'Aucun ami trouvé', style: TextStyle(color: Colors.white70), ), ); } return ListView.builder( physics: const BouncingScrollPhysics(), itemCount: friends.length, itemBuilder: (context, index) { final friend = friends[index]; return Dismissible( key: Key(friend.friendId), background: Container( color: Colors.redAccent, alignment: Alignment.centerLeft, padding: const EdgeInsets.only(left: 20), child: const Icon(Icons.delete, color: Colors.white), ), onDismissed: (direction) { _logger.i("[LOG] Suppression de l'ami avec l'ID : ${friend.friendId}"); friendsProvider.removeFriend(friend.friendId); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text("Ami supprimé : ${friend.friendFirstName}")), ); }, child: FriendExpandingCard( name: friend.friendFirstName ?? 'Ami inconnu', imageUrl: friend.imageUrl ?? '', description: "Amis depuis ${friend.friendId}", onTap: () => _navigateToFriendDetail(context, friend), onMessageTap: () { _logger.i("[LOG] Envoi d'un message à l'ami : ${friend.friendFirstName ?? 'Ami inconnu'}"); }, onRemoveTap: () { _logger.i("[LOG] Tentative de suppression de l'ami : ${friend.friendFirstName ?? 'Ami inconnu'}"); friendsProvider.removeFriend(friend.friendId); }, ), ); }, ); }, ), ), ], ), ), ); } void _navigateToFriendDetail(BuildContext context, Friend friend) { _logger.i("[LOG] Navigation vers les détails de l'ami : ${friend.friendFirstName}"); Navigator.of(context).push(MaterialPageRoute( builder: (context) => FriendDetailScreen( name: friend.friendFirstName, imageUrl: friend.imageUrl ?? '', friendId: friend.friendId, ), )); } }