Flutter · flutter_native_splash 2.4.8

Flutter Splash Screen with flutter_native_splash

Short answer

Add flutter_native_splash, set color and image in pubspec.yaml, and run dart run flutter_native_splash:create. Android 12+ needs its own android_12 block: a 1152×1152 image with the logo inside a 768 px circle. Use preserve() and remove() to keep it up while the app loads.

Checked against flutter_native_splash and Flutter: iOS launch screen in October 2026.

Image sizes

ImageSizeRule
image (iOS, web, Android < 12)PNG at 4x densityCentered on color
android_12.image, no icon background1152×1152 pxLogo inside a 768 px circle
android_12.image, with icon background960×960 pxLogo inside a 640 px circle
android_12.branding800×320 pxOptional, at the bottom

1. Add and configure

pubspec.yaml
dependencies:
  flutter_native_splash: ^2.4.8

flutter_native_splash:
  color: "#ffffff"
  image: assets/splash/logo.png
  color_dark: "#101010"
  image_dark: assets/splash/logo-dark.png

  android_12:
    color: "#ffffff"
    image: assets/splash/logo-android12.png
    icon_background_color: "#ffffff"
    color_dark: "#101010"
    image_dark: assets/splash/logo-android12-dark.png

Top-level keys don't affect Android 12 and later; only the android_12 block does. If android_12.image is missing, Android uses your launcher icon.

2. Generate

bash
dart run flutter_native_splash:create

To go back to Flutter's default: dart run flutter_native_splash:remove.

3. Keep it visible while loading

lib/main.dart
import 'package:flutter_native_splash/flutter_native_splash.dart';

void main() {
  final binding = WidgetsFlutterBinding.ensureInitialized();
  FlutterNativeSplash.preserve(widgetsBinding: binding);
  runApp(const MyApp());
}

// When initialization is done:
FlutterNativeSplash.remove();

Without preserve(), the splash closes when Flutter draws its first frame.

Flutter splash screen problems and fixes

You seeWhyFix
Old or wrong splash on iOSiOS caches launch screensflutter clean, delete the app, restart the device, reinstall
White screen before or after the splashiOS cache, or slow startupSame as above; use preserve() / remove()
Only the icon on Android 12+That's the Android 12 splash designSet android_12.image and android_12.color
No splash from Android Studio on API 31Known API 31 launch issueOpen the app from its launcher icon
"Module flutter_native_splash not found"Pods not installedRun pod install in ios/
"A splash screen was provided to Flutter, but this is deprecated"Old meta-data in the manifestRemove SplashScreenDrawable from AndroidManifest.xml

FAQ

What size is the Flutter splash image?

PNG at 4x density. For Android 12: 1152×1152 with the logo in a 768 px circle.

Can I use a full-screen background image on Android 12?

No. Android 12+ shows a centered icon on a solid color.

Can the splash follow my app's dark mode setting?

No. It shows before Flutter loads, so it follows the system setting.

Can the splash be animated?

Not with this package, except GIFs on web. Show an animated Flutter screen after remove().