不想看分析流程 想直接看解决方案的可以跳到下面直接看解决方案!
在网上找了很多办法都没有解决黑屏,本着百度不到就谷歌,谷歌不到就翻源码的习惯。翻看了一下android端的源码,从启动流程一直走一直走,发现flutter启动其实创建了一个flutter engine (flutter引擎)然后设置,之后开始创建flutterView。我们的解决问题的关键就在于flutterView。
来看这一段代码:

这里边创建了一个FlutterView,而后又创建了一个FlutterSplashView。注意看红框内的代码,显示闪屏flutterView,里面传入了两个参数,还有一个FlutterView是我们刚刚创建的,还有一个参数是我想就是我们想找的启动页了。继续跟进,寻找provideSplashScreen是什么,发现它是一个名为Host的接口里的一个方法,所以进而寻找它的实现类:

大致意思就是获取一个Drawable对象,如果这个Drawable对象不为nulll就创建一个图片闪屏对象,我们看一下这个Drawable对象到底是何方神圣:

找到了,在manifest文件里activity下的metaData里找到一个key为io.flutter.embedding.android.SplashScreenDrawable的资源id,并通过context.getResources().getDrawable()返回一个Drawable对象,如果没有就返回null。所以我们明白了。如果在Manifest文件下设置了io.flutter.embedding.android.SplashScreenDrawable的值那么就会显示闪屏页,否则只是会添加flutterView。
注:本次源码分析基于flutterSDK版本为 v1.12.13+hotfix.9-stable
解决办法:
在AndroidManifest文件下添加metaData:

resource就是你要添加的启动页图片,也可以是一个颜色(需要在指向的Drawable里设置)。
注:代码爆红是因为这不是一个Android Project。只要指对了相应的drawable即可
大功告成!撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。