搜索插件、代码仓与 APP 分类

插件详情v1.0.1

path_drawing

一个用于帮助创建和操作(Canvas)路径的 Flutter 库

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
91.2万
喜欢数
223
Pub 分数
140

安装插件

flutter pub add path_drawing

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 库,旨在简化 Canvas 路径的创建和操作。它提供了生成常见形状、变换路径以及执行几何运算(如偏移、缩放和合并路径)的实用函数。非常适合在任何 Flutter 平台上进行自定义绘图、动画或复杂矢量图形开发的开发者使用。该包可提高精度并减少处理复杂路径逻辑时的样板代码。

适合场景

  • 在画布中创建自定义形状
  • 动画路径变换
  • 生成几何图案
  • 构建基于向量的 UI 组件
  • 通过编程方式操作路径几何

主要特点

  • 便捷的路径构造工具
  • 路径变换方法
  • 支持路径交集和并集
  • 跨平台兼容性
  • 最小依赖开销

适合对象

  • Flutter 开发人员构建自定义图形
  • UI设计师实现矢量艺术
  • 需要路径控制的动画创作者
  • 需要精确形状渲染的应用程序

使用建议

  • 需要理解 Canvas 和 Path 概念
  • 仅限路径特定操作
  • 不用于完整SVG渲染
  • 最好与自定义绘画小部件一起使用

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

path_drawing

pub package

A Flutter library to assist with creating and manipulating paths.

Currently supports parsing a Path from an SVG path data string (including normalizing the path commands to be amenable to Flutter's exposed Path methods).

Dash paths has an initial implementation that relies on flutter 0.3.6 at a minimum.

Planned for future release(s):

  • Trim paths

Example

Parse some path from svg string:

import 'package:path_drawing/path_drawing.dart';

final trianglePath = parseSvgPathData('M150 0 L75 200 L225 200 Z');

Create CustomPainter:

class FilledPathPainter extends CustomPainter {
  const FilledPathPainter({
    @required this.path,
    @required this.color,
  });

  final Path path;
  final Color color;

  @override
  bool shouldRepaint(FilledPathPainter oldDelegate) =>
      oldDelegate.path != path || oldDelegate.color != color;

  @override
  void paint(Canvas canvas, Size size) {
    canvas.drawPath(
      path,
      Paint()
        ..color = color
        ..style = PaintingStyle.fill,
    );
  }

  @override
  bool hitTest(Offset position) => path.contains(position);
}

Use it inside CustomPaint:

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () => print('tap'),
      child: CustomPaint(
        painter: FilledPathPainter(
          path: trianglePath,
          color: Colors.blue,
        ),
      ),
    );
  }
}

More examples can be found in example folder

所属分类

依赖

依赖清单 3 项

源码仓库

使用此插件的项目