Flutter PopupMenuButton onLongPressed

时间:2019-03-08 18:45:52

标签: flutter long-press popupmenubutton

我试图在我长按创建的自定义小部件上显示菜单上下文(在点击时会有其他行为)。

我尝试将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,但无法在onLongPressed上显示菜单。

有什么想法吗?

0 个答案:

没有答案