我试图击中最上面的对象后面的一个对象。我试图通过使用GestureDetector
的behavior
属性来实现这一点。
代码如下:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: () => print("Bottom"),
child: new Container(
color: Colors.redAccent,
child: new Center(
child: new GestureDetector(
onTap: () => print("Top"),
behavior: HitTestBehavior.translucent,
child: new Container(
width: 200.0,
height: 200.0,
color: Colors.blue.withOpacity(0.3),
),
),
),
),
);
}
}
字符串
不幸的是,这似乎不起作用。只有 * Top * 被打印到控制台。文档使它看起来像是正确的方法,但也许我错过了什么?
2条答案
按热度按时间l0oc07j21#
我希望底部的一个或两个都接收
onTap
事件tbh。如果只获取
Bottom
事件就可以了,那么只需删除:字符串
注解掉这行代码后,当我点击内部方块时,它会打印
Bottom
。使用此版本测试:
型
也就是说,删除内部的
GestureDetector
对也是一样的,所以我想知道你添加它的原因是什么?gkn4icbw2#
对于那些需要同时触发两个检测器的人(这样他们就可以同时打印“顶部”和“底部”),你可以尝试使用
opaque
作为顶部检测器,而不是通常的GestureDetector
:字符串
编辑:实际上,似乎你甚至可以省略设置
behavior
,因为translucent
,opaque
和deferToChild
都可以工作。