Flutter - 如何在 child 触摸事件上忽略 parent 触摸事件?
Flutter - how to ignore parent touch event on child touch event?
这应该是非常基本的,但我似乎无法弄清楚如何在按下 child IconButton 时禁用或忽略 parent 触摸。我正在研究可以展开和折叠的树视图。当我单击该行(一张卡片)时,children 将显示或不显示(这是有效的)。我遇到的问题是,当触摸 child IconButton 时,IconButton 的 onPressed 事件以及 Card 的 onPointerDown 事件的监听器。但我只想触发 IconButton 的 onPressed 事件。有什么建议吗?
卡片的侦听器(行):
Listener(
behavior: HitTestBehavior.deferToChild,
onPointerDown: (PointerDownEvent event) {
toggleExpanded();
print("row pressed");
},
child: widget.parent
),
图标按钮:
return Card(
color: Theme.of(context).colorScheme.surfaceVariant,
elevation: 2.0,
child: ListTile(
leading: Icon(Icons.folder, color: Colors.amber),
title: titleWidget,
subtitle: countWidget,
//trailing: expandButton,
trailing:
IconButton(
icon: Icon(Icons.more_vert), onPressed: () { print("more icon"); },
),
),
);
改为使用 GestureDetector
GestureDetector(
onTap: () { print("row pressed"); },
child: <widget>
),
这应该是非常基本的,但我似乎无法弄清楚如何在按下 child IconButton 时禁用或忽略 parent 触摸。我正在研究可以展开和折叠的树视图。当我单击该行(一张卡片)时,children 将显示或不显示(这是有效的)。我遇到的问题是,当触摸 child IconButton 时,IconButton 的 onPressed 事件以及 Card 的 onPointerDown 事件的监听器。但我只想触发 IconButton 的 onPressed 事件。有什么建议吗?
卡片的侦听器(行):
Listener( behavior: HitTestBehavior.deferToChild, onPointerDown: (PointerDownEvent event) { toggleExpanded(); print("row pressed"); }, child: widget.parent ),
图标按钮:
return Card( color: Theme.of(context).colorScheme.surfaceVariant, elevation: 2.0, child: ListTile( leading: Icon(Icons.folder, color: Colors.amber), title: titleWidget, subtitle: countWidget, //trailing: expandButton, trailing: IconButton( icon: Icon(Icons.more_vert), onPressed: () { print("more icon"); }, ), ), );
改为使用 GestureDetector
GestureDetector(
onTap: () { print("row pressed"); },
child: <widget>
),