svg_path_parser 0.0.9 copy "svg_path_parser: ^0.0.9" to clipboard
svg_path_parser: ^0.0.9 copied to clipboard

outdated

A Flutter/Dart utility to parse an SVG path into a equivalent Path object from dart:ui library.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:svg_path_parser/svg_path_parser.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final paths = [
    "M213.1,6.7c-32.4-14.4-73.7,0-88.1,30.6C110.6,4.9,67.5-9.5,36.9,"
        "6.7C2.8,22.9-13.4,62.4,13.5,110.9C33.3,145.1,67.5,170.3,125,217"
        "c59.3-46.7,93.5-71.9,111.5-106.1C263.4,64.2,247.2,22.9,213.1,6.7z",
    "M 125,75 a100,50 0 0 1 100,50",
    "M 25,100C25,150,75,150,75,100S100,25,150,75",
    "M 25,75Q 50,150 75,100 T 150,150",
  ];
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int i = 0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: GestureDetector(
        behavior: HitTestBehavior.opaque,
        onTap: () {
          setState(() {
            i = (i + 1) % widget.paths.length;
          });
        },
        child: Center(
          child: Container(
            width: 300,
            height: 400,
            decoration: BoxDecoration(border: Border.all(color: Colors.red, width: 1.0)),
            child: CustomPaint(
              painter: MyPainter(parseSvgPath(widget.paths[i])),
            ),
          ),
        ),
      ),
    );
  }
}

class MyPainter extends CustomPainter {
  final Path path;
  MyPainter(this.path);

  @override
  void paint(Canvas canvas, Size size) {
    var paint = Paint()
      ..color = Colors.blue
      ..style = PaintingStyle.stroke
      ..strokeWidth = 4.0
      ..strokeCap = StrokeCap.round;
    canvas.drawPath(path, paint);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) => true;
}
54
likes
0
pub points
93%
popularity

Publisher

verified publishermasterashu.codes

A Flutter/Dart utility to parse an SVG path into a equivalent Path object from dart:ui library.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter, string_scanner

More

Packages that depend on svg_path_parser