我有一个六边形小部件,使用 CustomPainter,并且使用它,我制作了一个蜂窝小部件,例如
现在,我希望能够单击单个六边形。问题在于,六边形小部件基本上是一个矩形小部件,因此它与蜂窝结构中的其他六边形部分重叠。
我可以在六边形小部件周围添加一个 GestureDetector,但这会处理矩形中的所有点击。因此,我想忽略六边形本身之外的点击,并让鼠标点击由底层六边形处理。
这可能吗?
最佳答案
显然,CustomPainter
有一个hitTest
方法,因此以下代码片段似乎可以工作。
(感谢 ChatGPT 为我指明了正确的方向,尽管最初它顽固地声称 hitTest 是 CustomPaint
小部件的属性)
class HexagonPainter extends CustomPainter {
Path hexagonPath = Path();
@override
bool? hitTest(Offset position) {
//check if click is inside hexagon
return hexagonPath.contains(position);
}
...
关于flutter - 只处理特定区域的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74861247/