一个Stack包含MyWidget的内部Positioned。
Stack
MyWidget
Positioned
Stack( overflow: Overflow.visible, children: [ Positioned( top: 0.0, left: 0.0, child: MyWidget(), )], );
由于溢出大于,Overflow.visible并且MyWidget大于Stack,因此显示在的外部Stack,这是我想要的。
Overflow.visible
但是,我无法在该区域MyWidget之外的Stack区域中点击。它只是忽略了那里的水龙头。
我如何确保MyWidget在那里接受手势?
发生此现象的原因在于,堆栈在检查子项是否被命中之前先检查指针是否在其边界内:
类:RenderBox(RenderStack扩展)
bool hitTest(BoxHitTestResult result, { @required Offset position }) { ... if (_size.contains(position)) { if (hitTestChildren(result, position: position) || hitTestSelf(position)) { result.add(BoxHitTestEntry(this, position)); return true; } } return false; }
我的解决方法是删除
if (_size.contains(position))
检查。不幸的是,如果不从框架中复制代码,这是不可能的。
这是我所做的:
该解决方案绝不是最佳解决方案,但是可以实现所需的行为。