Flutter 手势检测器不';I don’我不想将自己的大小设置为子容器(除非你给它一个颜色)

Flutter 手势检测器不';I don’我不想将自己的大小设置为子容器(除非你给它一个颜色),flutter,layout,gesturedetector,Flutter,Layout,Gesturedetector,所以这个问题让我抓狂,所以任何帮助都将不胜感激:) 我目前有一个自定义的手势检测器,我想根据我给子容器的宽度和高度参数调整它的大小。尽管只有在给子容器指定了颜色(在这种情况下是透明的)时才会这样做。我将在下面发布一些代码和屏幕截图来进一步解释 我尝试过的方法包括使用SizedBox而不是容器,但没有成功。我还试图改变行为的价值观,但这似乎也没有改变任何东西 //The params width and height are given values up here ... return Cont

所以这个问题让我抓狂,所以任何帮助都将不胜感激:)

我目前有一个自定义的手势检测器,我想根据我给子容器的宽度和高度参数调整它的大小。尽管只有在给子容器指定了颜色(在这种情况下是透明的)时才会这样做。我将在下面发布一些代码和屏幕截图来进一步解释

我尝试过的方法包括使用SizedBox而不是容器,但没有成功。我还试图改变行为的价值观,但这似乎也没有改变任何东西

//The params width and height are given values up here
...
return Container(
        color: Color(0XFF0000FF), //Blue container which shows the actual size I want the GD to be.
        child: ColorFiltered( //Red shows how big the GD actually is.
          colorFilter: ColorFilter.mode(Color(0XFFFF0000), BlendMode.hue),
            child: RawGestureDetector(
            key: gestureKey,
            behavior: HitTestBehavior.translucent,
            gestures: <Type, GestureRecognizerFactory>{
              _SingleDeviceGestureDetector: GestureRecognizerFactoryWithHandlers<
                  _SingleDeviceGestureDetector>(
                () => _SingleDeviceGestureDetector(
                  //When the pointer touches down on the screen
                  onHorizontalDragDown: (details) { ... }
                  onHorizontalDragUpdate: (details) { ... }
                  onHorizontalDragUp: (details) { ...}
                ),
                (_SingleDeviceGestureDetector instance) {},
              ),
            },
            child: Container(  //The child container with a transparent colour.          
              //color: Color(0X00000000),
              height: height,
              width: width,
              child: ...
            ),
          ),
        ),
      );
    });
  }
//此处给出了参数宽度和高度的值
...
返回容器(
color:color(0XFF0000FF),//蓝色容器,显示我希望GD的实际大小。
child:ColorFiltered(//红色显示GD的实际大小。
colorFilter:colorFilter.mode(颜色(0XFFFF0000),BlendMode.hue),
孩子:RawGestureDetector(
键:手势键,
行为:HitTestBehavior.transparent,
手势:{
_SingleDeviceGestureDetector:GestureRecognitzerFactoryWithHandlers<
_SingleDeviceGestureDetector>(
()=>_单个设备消化检测器(
//当指针落在屏幕上时
onHorizontalDragDown:(详细信息){…}
onHorizontalDragUpdate:(详细信息){…}
onHorizontalDragUp:(详细信息){…}
),
(_SingleDeviceGestureDetector实例){},
),
},
child:Container(//具有透明颜色的子容器。
//颜色:颜色(0X00000000),
高度:高度,,
宽度:宽度,
孩子:。。。
),
),
),
);
});
}

当您取消注释子容器(1)中的颜色字段时,手势检测器的大小将与第一个父容器的大小相同(这是我想要的),当您注释掉颜色字段时(2),手势检测器的大小将更小

尽管我有修复程序,但它感觉很“黑”,而且弄清楚它为什么会这样做还是很好的


干杯

参见
手势检测器
官方文档:“默认情况下,一个不可见孩子的手势检测器忽略触摸;这种行为可以通过行为来控制。”是的,我刚刚看了一下,谢谢,但没有一种行为似乎能解决问题-延迟孩子只允许孩子接收事件,而且不透明“在其范围内接收事件,并防止后面的目标在视觉上也接收事件”,因此半透明似乎是最好的选择,但似乎无法解决问题。