twonly-app/lib/src/components/user_context_menu.dart
2025-02-09 18:02:52 +01:00

59 lines
1.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:pie_menu/pie_menu.dart';
import 'package:twonly/src/model/contacts_model.dart';
import 'package:twonly/src/views/chats/chat_item_details_view.dart';
import 'package:twonly/src/views/contact/contact_verify_view.dart';
class UserContextMenu extends StatefulWidget {
final Widget child;
final Contact user;
const UserContextMenu({super.key, required this.user, required this.child});
@override
State<UserContextMenu> createState() => _UserContextMenuState();
}
class _UserContextMenuState extends State<UserContextMenu> {
@override
Widget build(BuildContext context) {
return PieMenu(
onPressed: () => print('pressed'),
actions: [
PieAction(
tooltip: const Text('Verify user'),
onSelect: () {
Navigator.push(context, MaterialPageRoute(
builder: (context) {
return ContactVerifyView(widget.user);
},
));
},
child: widget.user.verified
? FaIcon(FontAwesomeIcons.shieldHeart)
: const Icon(Icons.gpp_maybe_rounded), // Can be any widget
),
PieAction(
tooltip: const Text('Open chat'),
onSelect: () {
Navigator.push(context, MaterialPageRoute(
builder: (context) {
return ChatItemDetailsView(user: widget.user);
},
));
},
child: const FaIcon(FontAwesomeIcons.solidComments),
),
PieAction(
tooltip: const Text('Send image'),
onSelect: () {
print('Send image selected');
},
child: const FaIcon(FontAwesomeIcons.camera),
),
],
child: widget.child,
);
}
}