svg_pic_editor 2.0.1 copy "svg_pic_editor: ^2.0.1" to clipboard
svg_pic_editor: ^2.0.1 copied to clipboard

A Flutter plugin for SVG editing and manipulation.

SvgPicEditor #

SvgPicEditor is a Flutter widget that enables loading and modifying SVG files from multiple sources, such as local assets, SVG strings, or URLs. This widget allows specific SVG elements to be modified using the ElementSvg class, making it easy to change properties like color, opacity, transformations, and more.

Table of Contents #

Installation #

To add SvgPicEditor to your Flutter project, include the following in your pubspec.yaml:

dependencies:
  svg_pic_editor: ^1.0.0

Or run the command:

flutter pub add svg_pic_editor

Usage #

Import #

To use SvgPicEditor, import the package in your Dart file:

import 'package:svg_pic_editor/svg_pic_editor.dart';

Basic Example #

Below is a basic example of how to use SvgPicEditor inside a Flutter widget:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('SvgPicEditor Example')),
        body: Center(
          child: SvgPicEditor.asset(
            'assets/example.svg',
            modifications: [
              ElementSvg(
                querySelector: '#element1',
                fillColor: Colors.red,
              ),
            ],
            width: 200.0,
            height: 200.0,
            fit: BoxFit.contain,
          ),
        ),
      ),
    );
  }
}

This example loads an SVG file from a local asset and changes the color of an SVG element with the ID element1 to red.

Constructors #

SvgPicEditor has three main constructors for different SVG sources:

SvgPicEditor.asset

Loads an SVG from a local asset:

SvgPicEditor.asset(
  'assets/your_file.svg',
  package: 'your_package',
  modifications: [/* List of ElementSvg */],
  width: 100.0,
  height: 100.0,
  fit: BoxFit.contain,
  querySelector: '#yourID',
  color: Colors.red,
);

SvgPicEditor.network

Loads an SVG from a URL:

SvgPicEditor.network(
  'https://example.com/your/svg.svg',
  modifications: [/* List of ElementSvg */],
  width: 100.0,
  height: 100.0,
  fit: BoxFit.contain,
  querySelector: '.yourClass',
  color: Colors.red,
);

SvgPicEditor.string

Loads an SVG from an SVG string:

SvgPicEditor.string(
  '<svg>...</svg>',
  modifications: [/* List of ElementSvg */],
  width: 100.0,
  height: 100.0,
  fit: BoxFit.contain,
  querySelector: '[attribute="value"]',
  color: Colors.red,
);

Widget Properties #

Key properties of the SvgPicEditor widget:

  • assetName (String?): The asset name containing the SVG.
  • svgString (String?): A string representing the SVG content.
  • svgUrl (String?): The URL of the SVG to be loaded.
  • package (String?): The package name containing the asset.
  • modifications (List<ElementSvg>?): List of modifications to be applied to the SVG.
  • width (double?): Width of the widget.
  • height (double?): Height of the widget.
  • fit (BoxFit): How the SVG should fit within the available space.
  • querySelector (String?): A query selector to target specific elements.
  • color (Color?): Color to apply to the SVG.

Modification Example #

The ElementSvg class allows specific modifications to SVG elements, such as color, opacity, and transformations.

class ElementSvg {
  final String? id;
  final Color? fillColor;
  final Color? strokeColor;
  final double? strokeWidth;
  final double? opacity;
  final String? transform;
  final String? querySelector;
  final String? cssInjector;

  ElementSvg({
    this.id,
    this.fillColor,
    this.strokeColor,
    this.strokeWidth,
    this.opacity,
    this.transform,
    this.querySelector,
    this.cssInjector,
  });
}

Modification Examples Using querySelector #

Selecting Specific Elements with querySelector

SvgPicEditor.asset(
  'assets/example.svg',
  modifications: [
    ElementSvg(
      querySelector: '#element1',
      fillColor: Colors.red,
    ),
    ElementSvg(
      querySelector: '.class1',
      strokeColor: Colors.blue,
      strokeWidth: 3.0,
    ),
  ],
  width: 200.0,
  height: 200.0,
  fit: BoxFit.contain,
);

Modifying Elements with Specific Attributes Using querySelector

SvgPicEditor.network(
  'https://example.com/your/svg.svg',
  modifications: [
    ElementSvg(
      querySelector: '[data-type="special"]',
      fillColor: Colors.green,
    ),
    ElementSvg(
      querySelector: '[stroke="black"]',
      strokeColor: Colors.yellow,
    ),
  ],
  width: 300.0,
  height: 300.0,
  fit: BoxFit.cover,
);

Animation Examples with SvgPicEditor #

Below is an example of how to use custom animations for SvgPicEditor:

SvgPicEditor.asset(
  'assets/example.svg',
  modifications: [
    ElementSvg(
      querySelector: 'rect#rectangle',
      fillColor: Colors.orange,
    ),
  ],
).shake(
  vsync: this,
  duration: Duration(milliseconds: 500),
  offset: 10.0,
  isInfinite: true,
);

In this example, the selected element is animated with a shake effect, creating a horizontal oscillation movement.

30
likes
130
points
109
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for SVG editing and manipulation.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_svg, http, plugin_platform_interface, shimmer, xml

More

Packages that depend on svg_pic_editor

Packages that implement svg_pic_editor