re_svg_new

A fork of re_svg.

A tiny and super-fast SVG rendering library for Flutter, with CSS support.

Underneath, the parsing and rendering of SVG run in isolates to prevent any potential frame drops.

Getting Started

re_svg_new is designed for ease of use. By simply introducing the SvgView widget, SVGs can be rendered correctly.

import 'package:re_svg_new/re_svg_new.dart';

final data = """
<svg height="100" width="100">
  <circle r="45" cx="50" cy="50" fill="blue" />
</svg> 
""";

SvgView(
  data: data,
  intrinsic: true,
);

Screenshot

Screenshot

Supported Platforms

  • x iOS
  • x Android
  • x macOS
  • Windows
  • x Linux
  • x Web

Linux is supported via the bundled native libresvg.so library.

On Web there is no native resvg binary, so SvgView falls back to the browser's own SVG engine: the SVG is rasterized through an <img>/<canvas> pipeline and returned to Flutter as a ui.Image. The public API is identical, but rendering of fonts and advanced CSS may differ slightly from the native resvg output.

  • resvg_action - Use GitHub Actions to compile the Rust library resvg for different platforms.
  • resvg_pod - For the iOS platform, Flutter’s local pod cannot directly download the online static library. Therefore, a new pod is created to download the resvg static library.
  • resvg_module - An Android library for dynamically linking the Rust library resvg.

For Rustaceans

This project demonstrates how to integrate Flutter with Rust libraries.