import 'package:flutter/material.dart'; import '../models/friend_request.dart'; import '../services/friends_service.dart'; class FriendsRequests extends StatefulWidget { const FriendsRequests({Key? key}) : super(key: key); @override State createState() => _FriendsRequestsState(); } class _FriendsRequestsState extends State { List _requests = []; late Future> _requestsQuery; @override void initState() { _requestsQuery = FriendsService.getPendingRequests(); _requestsQuery.then((requests) => setState(() => _requests = requests)); super.initState(); } @override Widget build(BuildContext context) { return Column( children: [ const Text( "Friend's Requests", style: TextStyle(fontSize: 24), textAlign: TextAlign.center, ), FutureBuilder>( future: _requestsQuery, builder: (context, snapshot) { if (!snapshot.hasData) { return const CircularProgressIndicator(); } if (_requests.isEmpty) { return const Text("You don't have any friend's requests"); } return ListView.builder( shrinkWrap: true, itemBuilder: ((context, index) => _requestTile(_requests[index])), itemCount: _requests.length, ); }, ), ], ); } void _acceptRequest(FriendRequest request) async { await FriendsService.acceptFriendRequest(request); setState(() { _requests = _requests.where((r) => r.requestId != request.requestId).toList(); }); } void _refuseRequest(FriendRequest request) async { await FriendsService.refuseFriendRequest(request); setState(() { _requests = _requests.where((r) => r.requestId != request.requestId).toList(); }); } Widget _requestTile(FriendRequest friendRequest) { return Card( child: ListTile( title: Text("${friendRequest.friendName} ${friendRequest.friendSurname}"), trailing: Row( mainAxisSize: MainAxisSize.min, children: [ TextButton( child: const Text("Refuse"), onPressed: () => _refuseRequest(friendRequest), ), TextButton( child: const Text("Accept"), onPressed: () => _acceptRequest(friendRequest), ), ], ), ), ); } }