在Flutter 应用程序中,我希望用一条线连接两个任意框.
该示例显示了GridView中的两个MyBoxes.

MyBoxes

我想从左边的MyBox滑动到右边的MyBox,并在它们之间画一条线来显示连接

有没有办法通过像CustomPainter这样的绘图技巧,或者通过改变小部件的 struct 来做到这一点呢?

推荐答案

我认为这可能是一个很好的挑战,所以我使用CustomPainter创建了一个最小的可行示例.就我个人而言,我总是使用使用LeafRenderObjectWidgetRenderBox的自定义RenderObject,然而,104应该更简单,这就是为什么我将在这个例子中使用它.

基本的 idea 是有一个Stack,其中既包含你的框,也包含CustomPainter,这允许你超越任何单个小部件的限制.在我的示例中,我不会拉直线,也不会确保它们连接两个框,但是,您可以通过向框中提供GlobalKey,将这些键存储在全局列表中(例如,在InheritedWidget或提供程序中),然后将一些逻辑应用于(globalKey.currentContext.findRenderObject() as RenderBox).localToGlobal(Offset.zero)返回的位置来轻松添加这一点.您还可以使用globalKey.currentContext.size访问这样的盒子大小

作为要点的源代码

插图

Dart相关问答推荐

程序给出不准确的值

如何在 Dart 游戏中重复听按键?

如何在 Dart 中返回函数?

Flutter Drawer 作为单独的小部件不允许修改宽度

AppLifcycleState.didChangeLifecycleState( ) 函数在应用程序进入前台或后台时不被调用

在polymer和dart中将内容标签渲染为模板的一部分

`pub get` 将 pubspec 依赖项下载到哪里?

IOS中Webview Flutter字体太小

自定义声音推送通知不起作用

什么是NoSuchMethod错误,如何修复?

有没有办法知道我的Flatter应用程序使用的是哪个Android API版本?

Flutter:测试期间的计时器问题

错误:无法调用需要 const 表达式的非const构造函数

如何从 ExpansionTile 的标题中删除默认填充

Dart:如何在异步函数中管理并发

Dart 的服务器端框架

用一个 catch 表达式在 Dart 中捕获多种特定的异常类型

如何使用 Dart 构建枚举?

如何在 Dart 中定义接口?

你如何在 Dart 中构建一个单例?