Я пытаюсь показать контекст меню в пользовательском виджете, который я создал, когда он долго нажимается (при касании происходит другое поведение).
Я пытался использовать GestureDetector с onLongPress и использовать функцию showMenu, нооно показывает меню в углу, а не поверх нажатого виджета.Я видел обходной путь, чтобы получить положение виджета и передать его в showMenu, но мне это кажется неопрятным.
return new GestureDetector(
child: _defaultBuild(),
onTap: onTap,
onLongPress: () {
showMenu(
items: <PopupMenuEntry>[
PopupMenuItem(
//value: this._index,
child: Row(
children: <Widget>[
Text("Context item1")
],
),
)
],
context: context,
position: _getPosition(context)
);
}
);
RelativeRect _getPosition(BuildContext context) {
final RenderBox bar = context.findRenderObject();
final RenderBox overlay = Overlay.of(context).context.findRenderObject();
final RelativeRect position = RelativeRect.fromRect(
Rect.fromPoints(
bar.localToGlobal(bar.size.bottomRight(Offset.zero), ancestor: overlay),
bar.localToGlobal(bar.size.bottomRight(Offset.zero), ancestor: overlay),
),
Offset.zero & overlay.size,
);
return position;
}
Я также пытался использовать PopupMenuButton, но не смогпоказать меню на LongPressed.
Есть идеи?