vibe_loader 0.0.2
vibe_loader: ^0.0.2 copied to clipboard
A simple Flutter demo app showcasing various animated loaders from the `vibe_loader` package.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:vibe_loader/loaders/liquid_bubble_loader.dart';
import 'package:vibe_loader/loaders/neon_grid_loader.dart';
import 'package:vibe_loader/loaders/quantum_orbital_loader.dart';
import 'package:vibe_loader/vibe_loader.dart';
void main() => runApp(const LoaderExample());
class LoaderExample extends StatefulWidget {
const LoaderExample({super.key});
@override
State<LoaderExample> createState() => _LoaderExampleState();
}
class _LoaderExampleState extends State<LoaderExample> {
int _currentPage = 0;
final List<Widget> _loaders = [
const LiquidBubbleLoader(size: 120),
const QuantumOrbitalLoader(size: 120),
const NeonGridLoader(size: 120),
const BouncingDotsLoader(size: 20),
const RotatingCircleLoader(size: 40),
const PulseLoader(size: 40),
];
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Fancy Loaders Demo',
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: const Color(0xFF0F0F1E),
appBarTheme: const AppBarTheme(
backgroundColor: Color(0xFF1A1A2E),
),
),
home: Scaffold(
appBar: AppBar(
title: const Text('Fancy Loaders'),
centerTitle: true,
),
body: Column(
children: [
Expanded(
child: PageView.builder(
itemCount: _loaders.length,
onPageChanged: (page) => setState(() => _currentPage = page),
itemBuilder: (context, index) {
return Center(
child: _loaders[index],
);
},
),
),
_buildPageIndicator(),
const SizedBox(height: 20),
],
),
),
);
}
Widget _buildPageIndicator() {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(
_loaders.length,
(index) => Container(
width: 12.0,
height: 12.0,
margin: const EdgeInsets.symmetric(horizontal: 4.0),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: _currentPage == index
? const Color(0xFF08F7FE)
: const Color(0xFF4A4A6A),
),
),
),
);
}
}