unique_splash_screen 0.0.1
unique_splash_screen: ^0.0.1 copied to clipboard
A unique and customizable splash screen package for Flutter applications.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:unique_splash_screen/unique_splash_screen.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Unique Splash Demo',
debugShowCheckedModeBanner: false,
home: const SplashSelector(),
);
}
}
/// Screen to select which splash screen example to show
class SplashSelector extends StatelessWidget {
const SplashSelector({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Select Splash Screen Example')),
body: ListView(
padding: const EdgeInsets.all(20),
children: [
ElevatedButton(
child: const Text('Basic Splash Screen'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (_) => const BasicSplashScreen()),
);
},
),
const SizedBox(height: 16),
ElevatedButton(
child: const Text('Gradient + Title + Subtitle Splash'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (_) => const GradientSplashScreen()),
);
},
),
const SizedBox(height: 16),
ElevatedButton(
child: const Text('Background Image + Bottom Loading'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => const BackgroundImageSplash(),
),
);
},
),
],
),
);
}
}
/// 1. Basic Splash Screen with logo and auto navigation
class BasicSplashScreen extends StatelessWidget {
const BasicSplashScreen({super.key});
@override
Widget build(BuildContext context) {
return SplashScreen(
logo: const FlutterLogo(size: 120),
duration: const Duration(seconds: 3),
done: Done(const HomePage()),
);
}
}
/// 2. Splash Screen with gradient background, title, subtitle, loading indicator
class GradientSplashScreen extends StatelessWidget {
const GradientSplashScreen({super.key});
@override
Widget build(BuildContext context) {
return SplashScreen(
gradient: const LinearGradient(
colors: [Colors.blue, Colors.blueAccent],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
logo: const FlutterLogo(size: 100),
title: const Padding(
padding: EdgeInsets.only(top: 16.0),
child: Text(
'Welcome to MyApp',
style: TextStyle(
fontSize: 28,
fontWeight: FontWeight.bold,
color: Colors.white,
),
textAlign: TextAlign.center,
),
),
subtitle: const Padding(
padding: EdgeInsets.only(top: 8.0),
child: Text(
'Loading your experience...',
style: TextStyle(fontSize: 16, color: Colors.white70),
textAlign: TextAlign.center,
),
),
loadingIndicator: const Padding(
padding: EdgeInsets.only(top: 20.0),
child: CircularProgressIndicator(color: Colors.white),
),
duration: const Duration(seconds: 4),
done: Done(const HomePage()),
);
}
}
/// 3. Splash Screen with background image, bottom loading indicator, and hidden status bar
class BackgroundImageSplash extends StatelessWidget {
const BackgroundImageSplash({super.key});
@override
Widget build(BuildContext context) {
return SplashScreen(
backgroundImageDecoration: const BackgroundImageDecoration(
image: AssetImage('assets/splash_bg.png'),
fit: BoxFit.cover,
opacity: 0.8,
),
logo: const FlutterLogo(size: 120),
loadingIndicator: const CircularProgressIndicator(color: Colors.white),
bottomLoading: true,
showStatusBar: false,
duration: const Duration(seconds: 3),
done: Done(const HomePage()),
);
}
}
/// Home Page after splash
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Home')),
body: const Center(
child: Text('🎉 Home Page', style: TextStyle(fontSize: 28)),
),
);
}
}