我希望能够在Flutter 画布上绘制SVG图像和绘制图形(主要是SVG之间的线条).目前,我停留在能够在画布上绘制SVG这一步.

我try 了Ffltter_svg的不同方法.在我看来,最明智的 Select 似乎是以下几点.但当我执行代码时,会出现蓝色圆圈,但不会出现SVG图像(我已经判断过它与Ffltter_SVG一起工作).当我热重新加载应用程序时,我似乎有时会收到一些关于闭包的空引用的警告.

class MyCanvas extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()..color = Color.fromARGB(255, 15, 9, 184);

    vg
        .loadPicture(const SvgAssetLoader("assets/Monogramme_dark.svg"), null)
        .then((picture) => picture.picture
            .toImage(50, 50)
            .then((image) => canvas.drawImage(image, Offset(100, 100), paint)));

    canvas.drawCircle(Offset(50.0, 20.0), 10, paint);
  }

  @override
  bool shouldRepaint(MyCanvas oldDelegate) => false;
}

推荐答案

正如我在前面的回答中所写的,有不同的方法来解决这个问题,而不是使用Canvas.

您可以将工作区定义为矩形、正方形或您喜欢的任何形状,并绘制与该区域相关的所有内容.

为此,您可以使用StackPositioned小部件在彼此的顶部和特定位置绘制组件.Look at this answer on Stack Overflow

你也可以看看Medium Dragging, zooming, and placing objects on indoor maps with Flutter上的这个教程,它解释了一个用Canvas创建的类似系统,在那里你可以放置对象并与它们交互.

不要忘记,尽管使用了Canvas,您仍然可以利用Ffltter的SetState属性来跟踪任何项目.

Flutter相关问答推荐

在Flutter中为不受约束的小部件制作动画

如何更改默认应用程序启动器/启动屏幕

SupabaseFlutter 集成问题:无法更新行

Flutter BLoC et workmanager:如何创建独特的仓库初始化模式?

'Flutter的无效常数值错误

为什么我的页面控制器在使用Riverpod时没有更改我的页面视图?

通过Ffltter应用程序与Docker服务器进行交互以进行身份验证

如何画三角形的圆角?

从图标启动器打开时,VSCode未检测到Web设备

Flutter 附近的连接

Riverpod Provider.family 和 HookConsumerWidget 不刷新 UI

在 Flutter 中更改喜欢按钮的 colored颜色

无状态小部件被奇怪地重建

Flutter/Riverpod 创建复杂对象的副本,其值在某处发生变化

如何在 flutter 中使用 tabbar 作为底部导航栏?

为什么轮播加载图片很慢?

Flutter RawMaterialButton 常量相对大小

如何按键在 map 列表中搜索

Flutter:font_awesome_icon pro 版报错?如何设置 font_awesome 克隆仓库的路径?

Flutter:如何将 AssetImage 转换为 Unit8List?