Обрабатывать событие касания в родительском виджете - PullRequest
0 голосов
/ 04 сентября 2018

В моем дереве приложений у меня есть два виджета:

GestureDetector(
   onTap: () => print('Outer'),
   child: IconButton(
     icon: Icon(Icons.add),
     onPressed: () => print('Inner')),
   ),
)

Оба они пытаются отреагировать на событие касания, но вызывается только обратный вызов ребенка (это поведение по умолчанию). Можно ли определить виджеты таким образом, чтобы не допустить, чтобы предок передавал событие касания своим дочерним элементам? Или, возможно, единственный способ - реализовать такое поведение самостоятельно, например, используя GestureArena?

1 Ответ

0 голосов
/ 04 сентября 2018

Я думаю, вы ищете виджет AbsorbPointer :

Виджет, который поглощает указатели во время тестирования удара.

Когда поглощение имеет значение true, этот виджет предотвращает его поддерево от получение событий указателя путем прекращения проверки попадания на себя. Это все еще занимает место во время расположения и рисует его дочерний элемент как обычно. Это просто мешает своим детям быть целью локализованных событий, потому что он возвращает true из RenderBox.hitTest.

Вы можете использовать это так:

GestureDetector(
  onTap: () => print('Outer'),
  child: AbsorbPointer(
    child: IconButton(
      icon: Icon(Icons.add),
      onPressed: () => print('Inner'),
    ),
  ),
),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...