Flutter SVG渲染插件re_svg的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter SVG渲染插件re_svg的使用

re_svg简介

Pub

re_svg 是一个为Flutter设计的轻量级且超级快速的SVG渲染库,支持CSS样式。它在底层通过隔离解析和渲染SVG来防止潜在的帧率下降问题。

开始使用

re_svg 插件非常易于使用,只需要引入 SvgView 小部件,即可正确渲染SVG图形。下面是一个简单的示例,展示如何使用 re_svg 渲染一个蓝色圆圈:

import 'package:re_svg/re_svg.dart';

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

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

示例代码

接下来,我们提供一个更完整的示例demo,以展示如何在Flutter项目中使用 re_svg 插件。该示例将加载并显示一个复杂的SVG图像,并将其嵌入到一个带有AppBar的Scaffold中,以便更好地查看效果。

完整的示例Demo

import 'package:flutter/material.dart';
import 'dart:ui' as ui;
import 'package:re_svg/re_svg.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  static String data = """
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
    <g fill="none">
        <!-- 复杂的路径定义 -->
        <path d="M27.014 90.57s.039.744-.287.736c-.322-.007-6.776-18.87-14.831-17.99 0 0 6.976-2.885 15.118 17.255zm1.385-1.186s-.216.713-.518.596c-.302-.117.043-20.052-7.828-21.964 0 0 7.541-.34 8.346 21.368zm10.784 16.609s.642.376.458.643c-.185.263-19.478-4.76-23.19 2.444 0 0 1.444-7.411 22.732-3.087zm-1.102 4.006s.728.157.637.466c-.092.31-19.987 1.621-21.239 9.625 0 0-.965-7.486 20.602-10.091z" stroke-width=".015" stroke="#000" fill="#FFF"/>
        <!-- 更多路径定义 -->
        ...
        <!-- 省略了部分路径定义以简化代码 -->
        ...
        <path d="M62.179 108.83s-.395.411.23-.69c.733-.247 44.851-28.694 60.267-25.568 0 0-10.637-2.947-60.463 26.278z" stroke-width=".039" stroke="#000" fill="#FFF"/>
        <path d="M75.74 100.178s-.2.627.471.243c3.522-2.009 4.94-24.457 22.038-24.95 0 0-12.717-5.772-22.51 24.707z" stroke-width=".039" stroke="#000" fill="#FFF"/>
    </g>
</svg>
""";

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('re_svg Demo'),
        ),
        body: SingleChildScrollView(
          child: Container(
            padding: const EdgeInsets.all(10),
            child: Center(
              child: SvgView(
                data: data,
                intrinsic: true,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

支持平台

  • ✅ iOS
  • ✅ Android
  • ✅ macOS
  • ❌ Windows
  • ❌ Linux
  • ❌ Web

相关项目

  • resvg_action - 使用GitHub Actions编译不同平台的Rust库resvg。
  • resvg_pod - 为iOS平台创建一个新的pod来下载resvg静态库。
  • resvg_module - 用于Android平台动态链接Rust库resvg。

对于Rust开发者

这个项目展示了如何集成Flutter与Rust库。


以上是关于Flutter SVG渲染插件 re_svg 的使用介绍。希望这些信息能够帮助您在项目中顺利使用 re_svg 插件。如果您有任何问题或需要进一步的帮助,请随时提问!


更多关于Flutter SVG渲染插件re_svg的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter SVG渲染插件re_svg的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用re_svg插件来渲染SVG图像的示例代码。re_svg是一个流行的Flutter插件,用于渲染SVG(可缩放矢量图形)文件。

首先,你需要在你的pubspec.yaml文件中添加re_svg依赖:

dependencies:
  flutter:
    sdk: flutter
  re_svg: ^0.2.0  # 请确保使用最新版本,这里仅作为示例

然后运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中使用re_svg来渲染SVG文件。假设你有一个名为example.svg的文件,你可以按照以下步骤操作:

  1. 将SVG文件添加到你的项目中: 将example.svg文件放在assets文件夹中(如果还没有assets文件夹,请创建一个)。然后在pubspec.yaml文件中声明该资产:
flutter:
  assets:
    - assets/example.svg
  1. 在Dart代码中使用ReSvgPicture小部件来渲染SVG
import 'package:flutter/material.dart';
import 'package:re_svg/re_svg.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter SVG Rendering with re_svg'),
        ),
        body: Center(
          child: ReSvgPicture.asset(
            'assets/example.svg',
            width: 200, // 你可以根据需要调整宽度和高度
            height: 200,
          ),
        ),
      ),
    );
  }
}

在这个示例中,ReSvgPicture.asset方法用于从资产文件夹中加载并渲染SVG文件。你可以通过widthheight参数来控制SVG图像的尺寸。

  1. 运行你的应用: 现在你可以运行你的Flutter应用,应该能够在屏幕上看到渲染的SVG图像。

这个示例展示了如何在Flutter项目中使用re_svg插件来渲染SVG文件。如果你需要更多的自定义功能,例如处理SVG文件中的交互或动画,你可以查阅re_svg的官方文档以获取更多信息。

回到顶部