已弃用的启动屏 API 迁移
在 Flutter 2.5 之前,Flutter 应用可以通过在其应用清单文件 (AndroidManifest.xml
) 的元数据中定义启动屏,通过在其 FlutterActivity
中实现 provideSplashScreen
,或两者兼而有之,来添加启动屏。这会在 Android 启动屏显示到 Flutter 绘制第一帧的短暂时间内显示。此方法自 Flutter 2.5 起已被弃用。Flutter 现在会自动保持 Android 启动屏显示,直到绘制第一帧。
要从定义自定义启动屏迁移到仅为您的应用定义自定义启动屏,请按照您应用自定义启动屏在 2.5 版本发布之前是如何定义的步骤进行操作。
在 FlutterActivity
中定义的自定义启动屏
找到您应用中
FlutterActivity
内的provideSplashScreen()
实现,然后删除它。此实现应涉及将您应用的自定义启动屏构建为Drawable
。例如java@Override public SplashScreen provideSplashScreen() { // ... return new DrawableSplashScreen( new SomeDrawable( ContextCompat.getDrawable(this, R.some_splash_screen))); }
请使用后续章节中的步骤,以确保您的
Drawable
启动屏(在上例中为R.some_splash_screen
)已正确配置为您应用的自定义启动屏。
在清单文件中定义的自定义启动屏
找到您应用的
AndroidManifest.xml
文件。在此文件中,找到activity
元素。在此元素内,识别android:theme
属性和定义启动屏为io.flutter.embedding.android.SplashScreenDrawable
的meta-data
元素,并更新它。例如xml<activity // ... android:theme="@style/SomeTheme"> // ... <meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/some_splash_screen" /> </activity>
如果未指定
android:theme
属性,请添加该属性并为应用的启动屏定义启动主题。删除
meta-data
元素,因为 Flutter 不再使用它,但它可能会导致崩溃。在您应用的
style
资源中,找到由android:theme
属性指定的the theme 定义。此主题指定了您应用的启动主题。确保style
属性配置了android:windowBackground
属性,其中包含您的自定义启动屏。例如xml<resources> <style name="SomeTheme" // ... > <!-- Show a splash screen on the activity. Automatically removed when Flutter draws its first frame --> <item name="android:windowBackground">@drawable/some_splash_screen</item> </style> </resources>