我正在使用showMenu()来显示弹出菜单。通常情况下,使用PopupMenuButton会有onSelected选项,但在showMenu()中似乎没有该选项。
我尝试将PopupMenuItem的内容包装在GestureDetector中,但这样会使可点击区域变得太小。如下图所示,较小的矩形是我的GestureDetector(可以工作但太小),而PopupMenuItem自带的Inkwell则是较大的矩形。
所以我的问题是,在没有onSelected属性的情况下,我应该如何处理PopupMenuItem的选择?
编辑:
这是代码。我有许多ListTiles,在长按时调用此方法:
void _showOptionsMenu(int hiveIndex) {
final RenderBox overlay = Overlay.of(context).context.findRenderObject();
showMenu(
context: context,
position: RelativeRect.fromRect(
// magic code from stackoverflow, positions the PopupMenu on your tap location
_tapPosition & Size(40, 40),
Offset.zero & overlay.size,
),
items: [
PopupMenuItem(
value: 0,
child: Row(
children: [
Icon(Icons.edit),
Text("Edit"),
],
),
),
PopupMenuItem(
value: 1,
child: Row(
children: [
Icon(Icons.delete),
Text("Delete"),
],
),
),
],
);
您无法将PopupMenuItems包装在GestureDetector中,因为items属性仅允许使用PopupMenuItems。