flutter_svga 0.0.6
flutter_svga: ^0.0.6 copied to clipboard
A Flutter package for rendering SVGA animations with dynamic customization, smooth playback, and high performance.
flutter_svga #
A Flutter package for parsing and rendering SVGA animations efficiently.
SVGA is a lightweight and powerful animation format used for dynamic UI effects in mobile applications.
π Features #
βοΈ Parse and render SVGA animations in Flutter.
βοΈ Load SVGA files from assets and network URLs.
βοΈ Supports custom dynamic elements (text, images, animations).
βοΈ Optimized playback performance with animation controllers.
βοΈ Integrated audio playback within SVGA animations.
βοΈ Works on Android & iOS (Web & Desktop support coming soon).
βοΈ Easy loop, stop, and seek functions.
π Installation #
Add flutter_svga to your pubspec.yaml:
dependencies:
flutter_svga: ^0.0.6
Then, install dependencies:
flutter pub get
π¬ Basic Usage #
β Playing an SVGA Animation from Assets #
import 'package:flutter/material.dart';
import 'package:flutter_svga/flutter_svga.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Flutter SVGA Example")),
body: Center(
child: SVGAEasyPlayer(
assetsName: "assets/sample_with_audio.svga",
fit: BoxFit.contain,
),
),
),
);
}
}
π Playing SVGA from a Network URL #
SVGAEasyPlayer(
resUrl: "https://example.com/sample.svga",
fit: BoxFit.cover,
);
π Advanced Usage: Using SVGAAnimationController #
β Controlling Animation Playback #
class MySVGAWidget extends StatefulWidget {
@override
_MySVGAWidgetState createState() => _MySVGAWidgetState();
}
class _MySVGAWidgetState extends State<MySVGAWidget>
with SingleTickerProviderStateMixin {
late SVGAAnimationController _controller;
@override
void initState() {
super.initState();
_controller = SVGAAnimationController(vsync: this);
SVGAParser.shared.decodeFromAssets("assets/sample.svga").then((video) {
_controller.videoItem = video;
_controller.repeat();
});
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return SVGAImage(_controller);
}
}
π¨ Customization & Dynamic Elements #
β Adding Dynamic Text #
controller.videoItem!.dynamicItem.setText(
TextPainter(
text: TextSpan(
text: "Hello SVGA!",
style: TextStyle(color: Colors.red, fontSize: 18),
),
textDirection: TextDirection.ltr,
),
"text_layer",
);
β Replacing an Image Dynamically #
controller.videoItem!.dynamicItem.setImageWithUrl(
"https://example.com/new_image.png",
"image_layer",
);
β Hiding a Layer #
controller.videoItem!.dynamicItem.setHidden(true, "layer_to_hide");
π― Playback Controls #
controller.forward(); // Play once
controller.repeat(); // Loop playback
controller.stop(); // Stop animation
controller.value = 0; // Reset to first frame
π Common Issues & Solutions #
β Black Screen when Loading SVGA #
β
Solution: Ensure your svga files are correctly placed inside assets/ and registered in pubspec.yaml.
flutter:
assets:
- assets/sample.svga
β SVGA Not Loading from Network #
β Solution: Ensure the SVGA file is accessible via HTTPS. Test the URL in a browser.
SVGAEasyPlayer(
resUrl: "https://example.com/sample.svga",
fit: BoxFit.cover,
);
β Animation Freezes or Doesn't Play #
β
Solution: Use setState after loading SVGA to rebuild the widget.
setState(() {
_controller.videoItem = video;
});
π± Supported Platforms #
| Platform | Supported | Audio Support |
|---|---|---|
| β Android | βοΈ Yes | βοΈ Yes |
| β iOS | βοΈ Yes | βοΈ Yes |
| β Linux | βοΈ Yes | βοΈ Yes |
| β Web | βοΈ Yes | β No |
| β macOS | βοΈ Yes | βοΈ Yes |
| β Desktop | βοΈ Yes | βοΈ Yes |
π Changelog #
See the latest changes in CHANGELOG.md.
π License #
This package is licensed under the MIT License. See LICENSE for details.
π€ Contributing #
- If you find a bug, report it here.
- Pull requests are welcome! See
CONTRIBUTING.mdfor guidelines.
π Enjoy using SVGA animations in your Flutter app! π