flutter_unique_loaders 1.0.0
flutter_unique_loaders: ^1.0.0 copied to clipboard
A collection of beautifully animated custom loaders built using pure Flutter widgets.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_unique_loaders/flutter_unique_loaders.dart';
void main() {
runApp(const MyLoaderApp());
}
class MyLoaderApp extends StatelessWidget {
const MyLoaderApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: LoaderDemoPage(),
);
}
}
class LoaderDemoPage extends StatefulWidget {
const LoaderDemoPage({super.key});
@override
State<LoaderDemoPage> createState() => _LoaderDemoPageState();
}
class _LoaderDemoPageState extends State<LoaderDemoPage> {
final Map<String, bool> _loading = {};
void _triggerLoader(String key) {
setState(() {
_loading[key] = true;
});
Future.delayed(const Duration(seconds: 2), () {
setState(() {
_loading[key] = false;
});
});
}
Widget loaderButton(String title, Widget loader, String key) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 12.0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: const Size(250, 50),
backgroundColor: Colors.white,
),
onPressed: () => _triggerLoader(key),
child: _loading[key] == true
? loader
: Text(
title,
style: const TextStyle(color: Colors.black),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Custom Loaders Demo",style: TextStyle(color: Colors.white),),
centerTitle: true,
backgroundColor: Colors.deepPurple,
),
body: Center(
child: SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
children: [
loaderButton("Tapping Hand", const TappingHandLoader(), "tappingHand"),
loaderButton("Rotating Petal", const RotatingPetalLoader(), "rotatingPetal"),
loaderButton("Sine Wave Dots", const SineWaveDotsLoader(), "sineWaveDots"),
loaderButton("Rotating Bubbles", const RotatingBubbleLoader(), "rotatingBubble"),
loaderButton("Dual Rotating Arcs", const DualRotatingArcsLoader(), "dualRotating"),
loaderButton("Paper Plane", const PaperPlaneLoader(), "paperPlane"),
loaderButton("Tetris Loader", const TetrisLoader(), "tetrisLoader"),
loaderButton("Hourglass", const HourglassLoader(), "hourglass"),
loaderButton(
"Circular Indicator",
const CircularIndicatorBar(
size: 30,
strokeWidth: 4,
progressColor: Colors.purple,
),
"circularIndicator",
),
loaderButton(
"Linear Indicator",
const SizedBox(
width: 150,
child: LinearIndicatorBar(
height: 6,
backgroundColor: Colors.white24,
progressColor: Colors.purple,
),
),
"linearIndicator",
),
loaderButton(
"Bouncing Dots",
const BouncingLoader(
dotCount: 3,
dotSize: 10,
color: Colors.purple,
),
"bouncingLoader",
),
loaderButton("Ripple Pulse", const RippleLoader(), "rippleLoader"),
],
),
),
),
);
}
}