在Flutter中绘制并与SVG交互
我们正在开发基于SVG输入的显示人体的应用程序。该人体分为几个区域,例如头部,左臂,右臂,腹部等。
当用户单击例如一只手臂时,我们希望突出显示图像的区域。在Flutter中实现这种目标的最佳方法是什么?
我们尝试将Flare用于Flutter,但此库没有提供与所显示人体的直接交互。
有没有更简单的方法来:
- 根据SVG渲染身体(艺术品在未来的发展中可能会发生变化);
- 检测点击,例如GestureDetector;
- 根据点击的坐标找到按下的区域;
请注意,简单框将无法工作,因为图像的一部分会重叠。您可以看到我们想要达到的效果,我在这里单击了一只手臂。在其周围绘制一些可单击的框将无法正常工作。
提前致谢。
回答:
我使用built_path
库将其工作,该库将SVG
路径预编译为Path
对象。然后,将其包装到ClipPathWidget
中,如下所示:
return GestureDetector( onTap: () => _bodyPartTapped(part),
child: ClipPath(
child: Stack(children: <Widget>[
Container(
color: pressedBodyPart == part
? Colors.blue
: Colors.transparent),
CustomPaint(painter: PathPainter(path))
]),
clipper: PathClipper(path)));
如果按下该按钮,它将使身体部位着色为蓝色,效果很好。
我创建了一个完整的示例,可以在这里找到:
https://github.com/gi097/flutter_clickable_regions
以上是 在Flutter中绘制并与SVG交互 的全部内容, 来源链接: utcz.com/qa/420645.html