import 'package:comunic/models/friend.dart'; import 'package:comunic/models/user.dart'; import 'package:comunic/ui/widgets/account_image_widget.dart'; import 'package:comunic/utils/date_utils.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:flutter/material.dart'; /// Accepted friend tile /// /// @author Pierre HUBERT enum _FriendMenuChoices { REMOVE } typedef OnRequestDeleteFriend = void Function(Friend); class AcceptedFriendTile extends StatelessWidget { final Friend friend; final User user; final OnRequestDeleteFriend onRequestDelete; const AcceptedFriendTile( {Key key, @required this.friend, @required this.user, @required this.onRequestDelete}) : assert(friend != null), assert(user != null), assert(onRequestDelete != null), super(key: key); @override Widget build(BuildContext context) { return ListTile( leading: AccountImageWidget(user: user), title: Text(user.displayName), subtitle: friend.isConnected ? Text( tr( "Online", ), style: TextStyle(color: Colors.green), ) : Text( diffTimeFromNowToStr(friend.lastActive), ), trailing: PopupMenuButton<_FriendMenuChoices>( itemBuilder: (c) => [ PopupMenuItem( child: Text(tr("Remove")), value: _FriendMenuChoices.REMOVE, ) ], onSelected: _selectedMenuOption, ), ); } void _selectedMenuOption(_FriendMenuChoices value) { if (value == null) return; switch (value) { //Delete friend case _FriendMenuChoices.REMOVE: onRequestDelete(friend); break; } } }