dotLottie Flutter
A Flutter plugin for rendering Lottie and dotLottie animations with full playback control, state machine support, and cross-platform compatibility with rendering fidelity.
Platforms supported: iOS, Android, macOS, and Web
Built on top of native implementations:
Features
- ✨ Play Lottie and dotLottie animations
- 🎮 Full playback control (play, pause, stop, seek)
- 🔄 State machine support with interactive inputs
- 🎨 Theme support
- 📱 Cross-platform: iOS, Android, macOS, and Web
Quick Links
- Getting Started - Installation and first steps
- Properties - All available properties
- Methods - Controller methods
- Events - Event listeners
- State Machines Guide - Interactive animations
Example
import 'package:flutter/material.dart';import 'package:dotlottie_flutter/dotlottie_flutter.dart';
class MyApp extends StatefulWidget { const MyApp({super.key});
@override State<MyApp> createState() => _MyAppState();}
class _MyAppState extends State<MyApp> { DotLottieViewController? _controller;
@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('dotLottie Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( width: 300, height: 300, child: DotLottieView( sourceType: 'url', source: 'https://lottie.host/your-animation.lottie', autoplay: true, loop: true, onViewCreated: (controller) { _controller = controller; }, ), ),
const SizedBox(height: 20),
Row( mainAxisAlignment: MainAxisAlignment.center, children: [ ElevatedButton( onPressed: () => _controller?.play(), child: const Text('Play'), ), const SizedBox(width: 10), ElevatedButton( onPressed: () => _controller?.pause(), child: const Text('Pause'), ), const SizedBox(width: 10), ElevatedButton( onPressed: () => _controller?.stop(), child: const Text('Stop'), ), ], ), ], ), ), ), ); }}