发生此现象的原因在于,堆栈在检查子项是否被命中之前先检查指针是否在其边界内:
类: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))
检查。不幸的是,如果不从框架中复制代码,这是不可能的。
这是我所做的:
- 复制Stack类并将其命名为Stack2
- 复制了RenderStack并将其命名为RenderStack2
- 使Stack2参考RenderStack2
- 从上面添加了hitTest方法,没有_size.contains检查
- 复制位置并命名为Position2,并使其引用Stack2作为其通用参数
- 在我的代码中使用了Stack2和Positioned2
该解决方案绝不是最佳解决方案,但是可以实现所需的行为。



