由于APP启动、Flutter初始化的时延造成第一个画面呈现明显滞后,所以需要一个过渡页面——启动页,直至flutter的第一个页面渲染完成。
官方推荐方案:
初始化应用
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/normal_background</item>
</style>
在AndroidManifest.xml中设置FlutterActivity
在AndroidManifest.xml中,设置theme的 FlutterActivity,以推出主题。然后,将元数据元素添加到所需的位置,FlutterActivity 以指示Flutter在适当的时间从启动主题切换到正常主题。
<activity
android:name=".MyActivity"
android:theme="@style/LaunchTheme"
// ...
>
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>