使用以下代码,GestureDetector仅在图像的左上角注册点击。
class _MyHomePageState extends State<MyHomePage> {
void tap(TapDownDetails details) {
print('${details.globalPosition}');
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new GestureDetector(
onTapDown: tap,
child: new Center(
child: new Container(
height: 400.0,
width: 400.0,
child: new FittedBox(
fit: BoxFit.fill,
child: new Image.asset('assets/900px-image.png'),
),
),
),
),
);
}
}
我希望在包含图像的框中的任何位置注册点按。但是,我确实发现如果我将BoxDecoration添加到包含Image的Container中,它会在框中的任何位置注册点击。 GestureDetector如何确定其影响范围以及为什么BoxDecoration会改变它?
body: new GestureDetector(
onTapDown: tap,
child: new Center(
child: new Container(
height: 400.0,
width: 400.0,
decoration: new BoxDecoration(color: Colors.transparent),
child: new FittedBox(
fit: BoxFit.fill,
child: new Image.asset('assets/900px-image.png'),
),
),
),
),
答案 0 :(得分:1)
可以通过GetureDetector behavior
属性更改此行为。
要让GestureDetector注册不透明的BoxDecoration,请将该值设置为HitTestBehavior.opaque
或HitTestBehavior.translucent