import 'package:flutter/material.dart'; import 'package:physigo/friends/services/challenge_location_service.dart'; import 'package:physigo/friends/widgets/add_friend.dart'; import '../models/friend.dart'; import '../services/friends_service.dart'; class FriendsList extends StatefulWidget { const FriendsList({Key? key}) : super(key: key); @override State createState() => _FriendsListState(); } class _FriendsListState extends State { void _shareLocation(String friendId) async { try { await ChallengeLocationService.shareChallengeLocation(friendId); _showSnackBar("Challenge's location shared!", Colors.green); } catch (error) { _showSnackBar(error.toString(), Colors.red); } } void _showSnackBar(String message, Color color) { ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(message), backgroundColor: color, duration: const Duration(milliseconds: 1500), )); } @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const AddFriend(), FutureBuilder>( future: FriendsService.getFriends(), builder: (context, snapshot) { if (!snapshot.hasData) { return const CircularProgressIndicator(); } final friends = snapshot.data!; return ListView.builder( shrinkWrap: true, itemBuilder: ((context, index) => _friendTile(friends[index])), itemCount: friends.length, ); }, ), ], ); } Widget _friendTile(Friend friend) { return Card( child: ListTile( title: Text("${friend.name} ${friend.surname}"), trailing: TextButton( child: const Text("Share challenge location"), onPressed: () => _shareLocation(friend.id), ), ), ); } }