为什么BoxDecoration会增加GestureDetector的影响范围?

时间:2018-04-09 05:22:13

标签: dart flutter

使用以下代码,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'),
        ),
      ),
    ),
  ),

1 个答案:

答案 0 :(得分:1)

可以通过GetureDetector behavior属性更改此行为。

要让GestureDetector注册不透明的BoxDecoration,请将该值设置为HitTestBehavior.opaqueHitTestBehavior.translucent