Игнорировать событие onTap () для Text -> Взять событие onTap () родительской строки вместо - PullRequest
0 голосов
/ 06 марта 2020

У меня есть Row виджет. Эта строка имеет Text как дочерний элемент (в данном случае это SelectableText). Строка встроена в виджет InkWell для обработки событий onTap(). Это работает нормально, если я не нажму Text. В этом случае событие InkWell onTap() не возникает.

InkWell(
  child: Row (
    children: <Widget> [
      SelectableText(...)
    ]
  ),
  onTap: () => doSth();
)

Можно ли игнорировать Text для событий onTap()? Мой обходной путь - добавить событие onTap() к Text с тем же кодом. Но на самом деле я хочу избежать этой репликации.


Редактировать: На самом деле, рядом с виджетом Text также есть виджет Button. Тем не менее его onPressed() событие должно работать как положено.

InkWell(
  child: Row (
    children: <Widget> [
      SelectableText(...),
      Button(
        onPressed: () {...}
      )
    ]
  ),
  onTap: () => doSth();
)

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Использовать IgnorePointer

InkWell(
  child: Row (
    children: <Widget> [
      IgnorePointer(
        child: SelectableText(...)
     )
    ]
  ),
  onTap: () => doSth();
)
0 голосов
/ 06 марта 2020

Попробуйте это:

GestureDetector(
 // behavior: HitTestBehavior.opaque,
  onTap: () => doSth();
  child: Row(
    children: <Widget>[
      SelectableText(...),
    ],
  ),
),
...