Flutter PopupMenuButton onLongPressed - PullRequest
       37

Flutter PopupMenuButton onLongPressed

1 голос
/ 08 марта 2019

Я пытаюсь показать контекст меню в пользовательском виджете, который я создал, когда он долго нажимается (при касании происходит другое поведение).

Я пытался использовать 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.

Есть идеи?

...