我认为这可能是一个很好的挑战,所以我使用CustomPainter
创建了一个最小的可行示例.就我个人而言,我总是使用使用LeafRenderObjectWidget
和RenderBox
的自定义RenderObject
,然而,104应该更简单,这就是为什么我将在这个例子中使用它.
基本的 idea 是有一个Stack
,其中既包含你的框,也包含CustomPainter
,这允许你超越任何单个小部件的限制.在我的示例中,我不会拉直线,也不会确保它们连接两个框,但是,您可以通过向框中提供GlobalKey
,将这些键存储在全局列表中(例如,在InheritedWidget
或提供程序中),然后将一些逻辑应用于(globalKey.currentContext.findRenderObject() as RenderBox).localToGlobal(Offset.zero)
返回的位置来轻松添加这一点.您还可以使用globalKey.currentContext.size
访问这样的盒子大小