Tutorial and code of SpinKit in Flutter. Copy and paste the below code as per your requirements.
flutter_spinkit: ^5.1.0
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
void main() => runApp(const App());
class App extends StatelessWidget {
const App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SpinKit',
debugShowCheckedModeBanner: false,
theme: ThemeData(
brightness: Brightness.dark,
),
home: Scaffold(
appBar: AppBar(title: const Center(child:Text("SpinKit"))),
body: SafeArea(
child: Stack(
children: <Widget>[
Align(
child: LayoutBuilder(
builder: (context, _) {
return IconButton(
icon: const Icon(Icons.play_circle_filled),
iconSize: 50.0,
onPressed: () {
Navigator.push(
context,
MaterialPageRoute<void>(
builder: (BuildContext context) => const ShowCase(),
fullscreenDialog: true,
),
);
},
);
},
),
alignment: Alignment.bottomCenter,
),
const Positioned.fill(
child: Center(
child: WorkSpace(),
),
),
],
),
),
),
);
}
}
class ShowCase extends StatelessWidget {
const ShowCase({Key? key}) : super(key: key);
static const kits = <Widget>[
SpinKitRotatingCircle(color: Colors.white),
SpinKitRotatingPlain(color: Colors.white),
SpinKitChasingDots(color: Colors.white),
SpinKitPumpingHeart(color: Colors.white),
SpinKitPulse(color: Colors.white),
SpinKitDoubleBounce(color: Colors.white),
SpinKitWave(color: Colors.white, type: SpinKitWaveType.start),
SpinKitWave(color: Colors.white, type: SpinKitWaveType.center),
SpinKitWave(color: Colors.white, type: SpinKitWaveType.end),
SpinKitPianoWave(color: Colors.white, type: SpinKitPianoWaveType.start),
SpinKitPianoWave(color: Colors.white, type: SpinKitPianoWaveType.center),
SpinKitPianoWave(color: Colors.white, type: SpinKitPianoWaveType.end),
SpinKitThreeBounce(color: Colors.white),
SpinKitThreeInOut(color: Colors.white),
SpinKitWanderingCubes(color: Colors.white),
SpinKitWanderingCubes(color: Colors.white, shape: BoxShape.circle),
SpinKitCircle(color: Colors.white),
SpinKitFadingFour(color: Colors.white),
SpinKitFadingFour(color: Colors.white, shape: BoxShape.rectangle),
SpinKitFadingCube(color: Colors.white),
SpinKitCubeGrid(size: 51.0, color: Colors.white),
SpinKitFoldingCube(color: Colors.white),
SpinKitRing(color: Colors.white),
SpinKitDualRing(color: Colors.white),
SpinKitSpinningLines(color: Colors.white),
SpinKitFadingGrid(color: Colors.white),
SpinKitFadingGrid(color: Colors.white, shape: BoxShape.rectangle),
SpinKitSquareCircle(color: Colors.white),
SpinKitSpinningCircle(color: Colors.white),
SpinKitSpinningCircle(color: Colors.white, shape: BoxShape.rectangle),
SpinKitFadingCircle(color: Colors.white),
SpinKitHourGlass(color: Colors.white),
SpinKitPouringHourGlass(color: Colors.white),
SpinKitPouringHourGlassRefined(color: Colors.white),
SpinKitRipple(color: Colors.white),
SpinKitDancingSquare(color: Colors.white),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0.0,
backgroundColor: Colors.transparent,
title: const Center(child: Text('SpinKit', style: TextStyle(fontSize: 24.0),)),
),
body: GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: context.adaptiveCrossAxisCount,
mainAxisSpacing: 46,
childAspectRatio: 2,
),
padding: const EdgeInsets.only(top: 32, bottom: 64),
itemCount: kits.length,
itemBuilder: (context, index) => kits[index],
),
);
}
}
extension on BuildContext {
int get adaptiveCrossAxisCount {
final width = MediaQuery.of(this).size.width;
if (width > 1024) {
return 8;
} else if (width > 720 && width < 1024) {
return 6;
} else if (width > 480) {
return 4;
} else if (width > 320) {
return 3;
}
return 1;
}
}
class WorkSpace extends StatelessWidget {
const WorkSpace({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
width: 300.0,
height: 300.0,
child: SpinKitFadingCircle(
itemBuilder: (_, int index) {
return DecoratedBox(
decoration: BoxDecoration(
color: index.isEven ? Colors.red : Colors.green,
),
);
},
size: 120.0,
),
);
}
}