smooth_loader Banner

A modern, lightweight, and highly customizable collection of beautiful loading animations for Flutter.

pub version likes pub points popularity


✨ Overview

smooth_loader is a dependency-free Flutter package that provides beautiful, smooth, and customizable loading animations for every type of application.

Instead of using the default CircularProgressIndicator, developers can choose from multiple modern loading animations with a consistent API and extensive customization.

Built with performance in mind.

  • 🚀 Zero runtime dependencies
  • 🎨 Beautiful animations
  • ⚡ High performance
  • 📱 Responsive
  • 🌙 Dark Mode Ready
  • 🧩 Easy integration
  • 💙 Flutter Native

🎬 Preview

smooth_loader Preview

Example:

Pulse Loader
Dots Loader
Wave Loader
Orbit Loader
Spinner Loader

✨ Features

  • 10 beautiful built-in loading animations
  • Unified SmoothLoader widget
  • Dedicated widgets for every loader
  • Highly customizable
  • Theme support
  • Null Safety
  • Responsive
  • Lightweight
  • Zero external dependencies
  • Works on Android, iOS, Web, Windows, macOS and Linux

📦 Installation

Add the package.

dependencies:
  smooth_loader: ^1.0.0

Install packages.

flutter pub get

Import.

import 'package:smooth_loader/smooth_loader.dart';

🚀 Quick Start

Using the unified widget.

const SmoothLoader(
  type: LoaderType.wave,
)

Using a dedicated widget.

const PulseLoader()

🎨 Supported Loaders

Version 1.0.0 includes:

  • Pulse Loader
  • Dots Loader
  • Wave Loader
  • Orbit Loader
  • Spinner Loader
  • Ripple Loader
  • Ring Loader
  • Cube Loader
  • Bar Loader
  • Bounce Loader

💡 Examples

Pulse Loader

const PulseLoader()

Dots Loader

const DotsLoader()

Wave Loader

const WaveLoader()

Spinner Loader

const SpinnerLoader()

Unified API

const SmoothLoader(
  type: LoaderType.spinner,
)

⚙️ Customization

Every loader supports customization.

SmoothLoader(
  type: LoaderType.ring,
  color: Colors.teal,
  size: 56,
  duration: Duration(milliseconds: 1200),
  strokeWidth: 4,
)

Available properties include:

  • color
  • size
  • duration
  • curve
  • strokeWidth
  • padding
  • alignment
  • animationDirection
  • repeat
  • enabled

🎭 Theme Support

Configure global defaults once.

LoaderTheme(
  data: const LoaderThemeData(
    color: Colors.indigo,
    size: 36,
    duration: Duration(milliseconds: 800),
  ),
  child: const MyApp(),
)

Individual widget properties always override theme values.


📱 Integration Examples

Scaffold

Scaffold(
  body: const Center(
    child: SpinnerLoader(),
  ),
)

FutureBuilder

FutureBuilder(
  future: fetchData(),
  builder: (context, snapshot) {
    if (!snapshot.hasData) {
      return const Center(
        child: SmoothLoader(
          type: LoaderType.dots,
        ),
      );
    }

    return const Text("Loaded");
  },
)

Button Loading

ElevatedButton(
  onPressed: isLoading ? null : login,
  child: isLoading
      ? const PulseLoader(size: 20)
      : const Text("Login"),
)

Dialog

showDialog(
  context: context,
  builder: (_) => const Dialog(
    child: Padding(
      padding: EdgeInsets.all(24),
      child: SpinnerLoader(),
    ),
  ),
);

Full Screen Loading

Scaffold(
  body: const Center(
    child: SmoothLoader(
      type: LoaderType.orbit,
      size: 60,
    ),
  ),
)

⚡ Performance

Designed for production applications.

  • RepaintBoundary optimization
  • Smooth animations
  • Efficient AnimationControllers
  • Minimal widget rebuilds
  • Zero runtime dependencies
  • Optimized for 60 FPS and high refresh-rate displays

♿ Accessibility

  • Semantic friendly
  • Screen reader compatible
  • Respects Flutter accessibility features
  • Theme aware
  • RTL compatible

📚 API Reference

Main Widgets

SmoothLoader()

Dedicated Loaders

PulseLoader()

DotsLoader()

WaveLoader()

OrbitLoader()

SpinnerLoader()

RippleLoader()

RingLoader()

CubeLoader()

BarLoader()

BounceLoader()

Supporting Classes

LoaderTheme

LoaderThemeData

LoaderType

🖼 Gallery

smooth_loader Gallery


🛣 Roadmap

Version 1.1

  • Skeleton Loader
  • Shimmer Loader
  • Equalizer Loader
  • Typing Loader
  • Infinity Loader

🤝 Contributing

Contributions are welcome.

If you'd like to improve the package:

  1. Fork the repository
  2. Create a new branch
  3. Commit your changes
  4. Submit a Pull Request

Bug reports and feature requests are also welcome through GitHub Issues.


📄 License

This project is licensed under the MIT License.

See the LICENSE file for details.


❤️ Support

If you find this package useful:

⭐ Star the GitHub repository

👍 Like the package on pub.dev

🐛 Report bugs

💡 Suggest new loader ideas

Happy Flutter development! 🚀


🔗 Connect with Me

Company: https://andronexa.vercel.app All Links: https://linktr.ee/haris.dev Portfolio: https://haris-devs.vercel.app

Facebook: https://web.facebook.com/profile.php?id=61590527793597 Github: https://github.com/haris-devs Thread: https://www.threads.com/@haris.devs X: https://x.com/haris_devs

Insta: https://www.instagram.com/haris.devs Tiktok: https://www.tiktok.com/@harisdev7 Linkedin: https://www.linkedin.com/in/haris-devs Youtube: http://www.youtube.com/@haris-devs

Libraries

smooth_loader
A beautiful and configurable collection of Flutter loading animations.