Flutter SVG动画播放插件svgaplayer_3的使用
SVGAPlayer-Flutter
简介
SVGAPlayer 是一个轻量级的动画渲染器。您可以使用工具从 Adobe Animate CC 或 Adobe After Effects 导出 svga
文件,然后在移动应用程序中使用 SVGAPlayer 渲染动画。
SVGAPlayer-Flutter
通过 Flutter CustomPainter 原生渲染动画,为您提供高性能且低成本的动画体验。
如需更多信息,请访问此 网站。
- SVGAPlayer-Flutter 仅支持 2.0 格式。
使用
以下是 SVGAPlayer-Flutter
的使用说明。有关导出使用的详细信息,请点击 这里。
添加依赖
dependencies:
svgaplayer_3: ^3.0.1 #最新版本
定位文件
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;
当不再需要时,您需要调用 MovieEntity::dispose()
方法。
缓存
我们不会管理任何缓存,您需要使用 dio
或其他库来处理资源缓存。
使用 SVGAParser.decodeFromBytes
方法来解码缓存数据。
## 特性
以下是一些功能示例。
- [动态图像替换](https://github.com/yyued/SVGAPlayer-Flutter/wiki/Dynamic-Image)
- [在元素上方添加文本](https://github.com/yyued/SVGAPlayer-Flutter/wiki/Dynamic-Text)
- [动态隐藏元素](https://github.com/yyued/SVGAPlayer-Flutter/wiki/Dynamic-Hidden)
- [自定义元素抽屉](https://github.com/yyued/SVGAPlayer-Flutter/wiki/Dynamic-Drawer)
## 许可证
[反996许可证](https://github.com/bear3z/SVGAPlayer-Flutter/blob/master/LICENSE)
更多关于Flutter SVG动画播放插件svgaplayer_3的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html