Flutter SVG动画播放插件svgaplayer_flutter_rhr的使用
Flutter SVG动画播放插件svgaplayer_flutter_rhr的使用
支持本项目
如果 SVGA-Flutter 为您提供了便利与帮助,诚恳建议您通过以下方式支持作者、贡献者持续为该项目发电。
- 轻点 GitHub Star,让更多人看到该项目。
- 通过赞赏码(页面底部可见)的方式鼓励作者继续维护代码。
关注作者另外一个开源项目,MPFlutter,使用 Flutter 开发微信小程序。
简介
SVGAPlayer 是一个轻量级的动画渲染器。您可以使用 工具 从 Adobe Animate CC 或 Adobe After Effects 导出 svga
文件,然后使用 SVGAPlayer 在移动应用程序中渲染动画。
SVGAPlayer-Flutter
通过 Flutter CustomPainter 原生渲染动画,为您提供高性能、低成本的动画体验。
更多信息,请访问 网站。
- SVGAPlayer-Flutter 支持 2.0 格式。
使用
这里介绍 SVGAPlayer-Flutter
的使用方法。有关导出使用的详细信息,请点击 这里。
添加依赖
dependencies:
svgaplayer_flutter: ^2.0.0 #最新版本
定位文件
SVGAPlayer 可以从 Flutter 的本地 assets
目录或远程服务器加载 svga 文件。请自行将文件添加到 pubspec.yaml
中。
极其简单的使用方法
渲染动画的最简单方法是使用 SVGASimpleImage
组件。
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: SVGASimpleImage(
resUrl: "https://github.com/yyued/SVGA-Samples/blob/master/angel.svga?raw=true"),
);
}
}
动画会重复播放。如果您想要更强的动画控制,可以使用代码。
使用代码控制
要控制动画的渲染,您需要创建一个 SVGAAnimationController
实例,就像 Flutter 中的常规动画一样。将其分配给 SVGAImage
,使用 SVGAParser
加载并解码资源,然后使用 SVGAAnimationController
进行操作。
import 'package:flutter/material.dart';
import 'package:svgaplayer_flutter/svgaplayer_flutter.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
SVGAAnimationController animationController;
@override
void initState() {
this.animationController = SVGAAnimationController(vsync: this);
this.loadAnimation();
super.initState();
}
@override
void dispose() {
this.animationController.dispose();
super.dispose();
}
void loadAnimation() async {
final videoItem = await SVGAParser.shared.decodeFromURL(
"https://github.com/yyued/SVGA-Samples/blob/master/angel.svga?raw=true");
this.animationController.videoItem = videoItem;
this
.animationController
.repeat() // 尝试使用 .forward() .reverse()
.whenComplete(() => this.animationController.videoItem = null);
}
@override
Widget build(BuildContext context) {
return Container(
child: SVGAImage(this.animationController),
);
}
}
重用 MovieEntity
MovieEntity
在 AnimationController
销毁或 AnimationController::videoItem
重置后会被销毁。
销毁后,MovieEntity
无法重用。
如果您希望重用 MovieEntity
,请将 MovieEntity::autorelease
设置为 false
。
final videoItem = await SVGAParser.shared.decodeFromURL(
"https://github.com/yyued/SVGA-Samples/blob/master/angel.svga?raw=true");
videoItem.autorelease = false;
更多关于Flutter SVG动画播放插件svgaplayer_flutter_rhr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter SVG动画播放插件svgaplayer_flutter_rhr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用svgaplayer_flutter_rhr
插件来播放SVG动画的示例代码。这个插件允许你加载和播放SVGAPlayer动画文件(.svga格式)。
首先,确保你的Flutter项目已经添加了这个插件。在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
svgaplayer_flutter_rhr: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中使用这个插件来播放SVG动画。以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:svgaplayer_flutter_rhr/svgaplayer_flutter_rhr.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SVG Animation Player',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SVGAnimationScreen(),
);
}
}
class SVGAnimationScreen extends StatefulWidget {
@override
_SVGAnimationScreenState createState() => _SVGAnimationScreenState();
}
class _SVGAnimationScreenState extends State<SVGAnimationScreen> {
late SVGAPlayerController _controller;
@override
void initState() {
super.initState();
// 初始化控制器
_controller = SVGAPlayerController.asset('assets/your_animation.svga');
// 加载动画文件,路径为assets目录下的your_animation.svga文件
_controller.loadAsset('assets/your_animation.svga');
// 播放动画
_controller.play();
}
@override
void dispose() {
// 释放资源
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SVG Animation Player'),
),
body: Center(
child: SVGAPlayer(
controller: _controller,
width: 300, // 设置动画的宽度
height: 300, // 设置动画的高度
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// 切换播放/暂停状态
if (_controller.isPlaying) {
_controller.pause();
} else {
_controller.play();
}
},
tooltip: 'Play/Pause',
child: Icon(
_controller.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
);
}
}
在这个示例中,我们做了以下几件事:
-
依赖安装:在
pubspec.yaml
文件中添加了svgaplayer_flutter_rhr
依赖。 -
资源文件:将你的
.svga
文件放置在assets
目录下,并在pubspec.yaml
中声明这个资源:flutter: assets: - assets/your_animation.svga
-
初始化控制器:在
initState
方法中初始化SVGAPlayerController
,并加载和播放动画。 -
UI布局:使用
SVGAPlayer
小部件来显示动画,并提供一个浮动按钮来切换播放/暂停状态。
请确保你已经将.svga
文件正确放置在assets
目录下,并在pubspec.yaml
中正确声明。
这个示例代码提供了一个基本的框架,你可以根据需要进一步扩展和自定义,比如添加循环播放、调整动画速度等功能。