jonbhanson/flutter_native_splash
72.8
Strong · 19 September 2026
2.9k
lines of production code
Dart
primary language
1
measurement over time
What this system is
This system is a Flutter plugin that automates the generation and removal of native splash screens for Android, iOS, and web platforms. It provides a command-line interface that allows developers to configure splash screens via YAML files, supporting distinct configurations for multiple app flavors. The tool handles platform-specific asset generation and runtime splash removal, ensuring consistent behavior across different target environments.
Features
Added example app demonstrating native splash screen integration
The example application in example/lib/main.dart has been added to demonstrate how to integrate the flutter\_native\_splash package. It shows the standard pattern of preserving the splash screen during initialization via FlutterNativeSplash.preserve() in main(), performing asynchronous setup tasks in the home page's initState, and removing the splash screen with FlutterNativeSplash.remove() once ready.
example/lib · high confidence
Added example project with web support and configuration options
The example application has been added to the repository, providing a testbed for the splash screen functionality. It now supports the web platform, as indicated by the project metadata, and includes a secondary splash screen configuration. Users can explore different splash screen appearances using the provided \red.yaml\ configuration file, which sets a red color scheme and enables fullscreen mode, or specify custom paths via the command line.
example · high confidence
Added iOS example project scaffolding
The iOS example application has been added to the repository, providing a complete Xcode project structure for testing and demonstration. This includes the standard Flutter iOS configuration files (such as \AppFrameworkInfo.plist\ and \xcconfig\ files), the main \Runner\ target with Swift-based \AppDelegate\, storyboards for the launch screen and main interface, asset catalogs for app icons and launch images, and a basic XCTest suite (\RunnerTests\).
example/ios · high confidence
Added web support to the example app
The example application now supports the web platform by introducing the necessary entry files: an \index.html\ template configured with Flutter's base href placeholder and a \manifest.json\ defining the app's metadata, icons, and PWA capabilities.
example/web · high confidence
Flavor support and web splash removal via MethodChannel
The library now supports generating splash screens for multiple app flavors, allowing developers to specify distinct splash configurations per flavor via CLI flags (--flavor, --flavors, --all-flavors) and corresponding YAML files. Additionally, the web implementation has been refactored to use a MethodChannel for runtime splash removal, replacing previous direct DOM manipulation with a \remove\ method call to the native web plugin, ensuring consistent behavior across platforms.
lib · high confidence
Initial Android example project scaffolding
The example/android directory now contains a complete, buildable Android application structure for the flutter\_native\_splash example. This includes the necessary AndroidManifest.xml files for debug, profile, and main configurations, Kotlin-based MainActivity, standard launch background drawables, and light/dark mode theme definitions, providing a functional baseline for testing the plugin on Android.
example/android · high confidence
Behavioural changes
CLI commands now support flavors and explicit project paths
The \flutter\_native\_splash create\ and \remove\ commands have been rewritten to use the \args\ package, enabling users to target specific project paths via the \--path\ flag and manage splash screens for specific app flavors using \--flavor\, \--flavors\ (comma-separated list), or \--all-flavors\. This replaces the previous direct library invocation, allowing for more granular control over which configuration files are processed during splash generation and removal.
bin · high confidence
Version bump to 2.4.8 and project restructure
The package version is updated to 2.4.8, and the project type is changed from a standard package to a plugin. The changelog is expanded to document recent fixes, including the introduction of the \android\_min\_sdk\ parameter, removal of unnecessary native code, and a fix for the \remove\ command. Additionally, the project configuration is updated with new \.travis.yml\ and \analysis\_options.yaml\ files, and the license is set to MIT.
(repo-wide) · high confidence
Test coverage
Added smoke test for the example app; Added unit tests for CLI flavor configuration and color parsing.
Dependencies
Example app updated to modern Flutter/Android standards and package dependencies upgraded
The example app's Android configuration has been migrated to the new Gradle plugin DSL (using \plugins {}\ blocks, \namespace\, and \compileSdk\/\minSdk\ properties) and updated to Android Gradle Plugin 8.7.3 and Kotlin 1.8.22. The example's \pubspec.yaml\ now targets Dart 3.7.2 and depends on the local package at version 2.4.8. The main package's \pubspec.yaml\ has been significantly updated: the SDK constraint is raised to \\>=3.0.0\, and dependencies have been upgraded, including \image\ to \^4.5.4\, \html\ to \^0.15.6\, \xml\ to \\>=6.6.1 \<8.0.0\, and \yaml\ to \^3.1.3\, while adding \ansicolor\, \meta\, \path\, and \universal\_io\. The package is now explicitly configured as a plugin with web support.
(dependencies) · high confidence
Updated Gradle wrapper to version 8.9
The example Android project now uses Gradle 8.9 for builds, ensuring compatibility with the latest build tooling and Java 21 support.
example/android/gradle · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 73.
Lenses
- Code Health 94
- Architecture 83
- Maturity 65
- Readiness 67
- Security 100
- Domain Modelling 100
Changes since last survey
- 230 commits — 153 feature/other, 77 fixes
By area
- (root) — 158 commits
- lib/android.dart — 18 commits
- (repo) — 8 commits
- example/ios — 8 commits
- example/android — 7 commits
- .github/workflows — 3 commits
- example/assets — 3 commits
- ios/flutter_native_splash — 3 commits
- lib/cli_commands.dart — 3 commits
- lib/constants.dart — 3 commits
- lib/ios.dart — 3 commits
- lib/templates.dart — 3 commits
- .github/ISSUE_TEMPLATE — 2 commits
- android/build.gradle — 1 commit
- bin/remove.dart — 1 commit
- example/README.md — 1 commit
- example/lib — 1 commit
- ios/Resources — 1 commit
- lib/flavor_helper.dart — 1 commit
- lib/flutter_native_splash.dart — 1 commit
Notable commits
- fix: * Added a FAQ to address the deprecation of SplashScreenDrawable. Closes #199. * Added <picture> tag to index.html by finding the </body> tag instead of src="main.dart.js, which was removed in Flutter 2.5. Fixes #202. * Added <item name="android:forceDarkAllowed">false</item> tag to dark mode styles.xml to improve Xiaomi support. Closes #184. * Use nulls more effectively. Update example app with better dark mode support.
- fix: * Fixed bug that created duplicate android:windowFullscreen tags in styles.xml. Closes #147. * Fixed fullscreen in Android dark mode. * Print errors instead of throwing exceptions for cleaner output. * Added message for missing subviews in iOS LaunchScreen.storyboard. Fixes #146. * Removed duplicate exceptions for missing image file since that is now checked at package start.
- fix: * Merged PR that adds branding. Thanks Faiizii for PR. Closes #256. Updated readme. Closes #258. Fix so that the splash screen does not cover the app in web. Fixes 253. Updates per linter rules.
- fix: * Updated readme. Thanks @j-j-gajjar for PR #216. * Remove references to background images in web when images are missing. Fixes #196. * Updated dependencies.
- fix: - fixed an issue where the branding path for Android 12 (#315)
- fix: Add CI and resolve some lints and fix tests (#433)
- fix: Add branding support in Android 12. Thanks Vladimir for the PR. Updated readme. Closes #317. Closes #318. Don't create a blank branding imageset. Fixes #264.
- fix: Added configuration parameter to specify the info.plist location(s). Updated documentation. Fixes #120, #42.
- fix: Added parameters for platform-specific images. Closes #375. Remove black status bar which appeared on Android devices with a notch. Fixes #311.
- fix: Added support for Android -v21 resource folders, which appear in the Flutter beta channel. Parse launch_background.xml with XML package for more reliability. Fixes #104, #118.
- fix: Allow users to set Android gravity and iOS ContentMode directly. Parse LaunchScreen.storyboard with XML package for more reliability. Updated install instructions. Fixes #18. Closes #63.
- fix: Check the file type and exit with error if it is not a PNG. Updated documentation with more FAQs. Fixed bug that was preventing copying of images for web. Fixes #192. Changed the example to show a secondary splash screen. Check that android, web, and ios folders exist before updating respective splash screen.
- fix: Create new storyboard file rather than try to modify existing file. Closes #369. Reverted 2.1.6 change of using light settings for dark mode if omitted. Fixes #368.
- fix: Don't create Android 12 night res files if dark mode is not configured. Fixes #227. Remove command takes dark mode into account.
- fix: Don't update values-31 if there is no android_12 section in the config. Closes #447. Additional fix for index.html getting extra blank lines. Fixes #430.
- fix: Ensure compatibility with Java 21. Thanks Fichtelcoder for PR #759. Sets Android namespace. Fixes #755.
- fix: FIX: branding img src link broken (#394)
- fix: Fix Android dividers (#157)
- fix: Fix CHANGELOG.md (#384)
- fix: Fix Error: Not found: 'dart:js' error. Fixes #292.
- …and 210 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
jonbhanson/flutter_native_splash was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 3de495d6cc4d4a2bce0e2e12286e1ffee15f1a35 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.