Выровнять виджет Flutter Center по указанной координате c - PullRequest
0 голосов
/ 29 мая 2020

Я создаю виджет всплывающего меню, который принимает два аргумента: виджет кнопки и виджет меню. Когда кнопка нажата, виджет меню передается в OverlayEntry как дочерний элемент, который затем добавляется в Overlay.of (context)

Я бы хотел, чтобы результирующий дисплей был таким:

     O   (Button)
 ____|____
 | MENU  |
 |_______|

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

Есть ли там какой-нибудь мягкий вариант компоновки, чтобы указать виджету любого размера вертикальное или горизонтальное выравнивание по заданной координате?

1 Ответ

0 голосов
/ 29 мая 2020

Чтобы получить размер виджета:

Сначала дайте вашему виджету ключ:

key: _key,

Затем вы можете получить размер (и положение) следующим образом:

_getSize() {
    final RenderBox renderBox = _key.currentContext.findRenderObject();
    final size = renderBox.size;
    final position = renderBox.localToGlobal(Offset.zero);

    final height = size.height; //same for width
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...