1 | initial version |
Here is how you can incorporate a splash screen for 2 seconds in Flutter that is native to the platform:
Create an assets folder and add an image of your choice for the splash screen, preferably a PNG image.
In your pubspec.yaml file, add the following lines of code to load the image:
assets:
- assets/splash.png
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:async';
class SplashScreen extends StatefulWidget {
@override
_SplashScreenState createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
@override
void initState() {
super.initState();
Timer(Duration(seconds: 2), () => Navigator.pushReplacement(
context, MaterialPageRoute(builder: (context) => HomePage())));
}
@override
Widget build(BuildContext context) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarColor: Colors.white,
systemNavigationBarIconBrightness: Brightness.dark
));
return Scaffold(
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/splash.png"),
fit: BoxFit.cover
)
),
),
);
}
}
In the initState() method, we define a delay of 2 seconds using the Timer object, and use the Navigator.pushReplacement() method to navigate to the HomePage() of our app.
In the build() method, we use the SystemChrome class to customize the status bar and navigation bar of our app. We then use a Container widget to display the splash screen image.
Finally, in your main() method, replace the default MyApp() widget with SplashScreen() as follows:
void main() {
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
home: SplashScreen(),
));
}