有没有办法根据 Apps 主题更改启动画面颜色?
Is there a way to change the splash screen color based on the Apps theme?
能否以编程方式更改本机 android 初始屏幕颜色,以便将其设置为适合为 Flutter 应用选择的主题?
有点像当系统主题设置为深色时,WhatsApp 初始屏幕如何在深色主题中加载。
深色和浅色 WhatsApp 启动画面:
我想这使用了两个主题作为初始屏幕,它们链接到系统主题,但我不太了解如何以及是否可能。
所以问题是:是否可以在 运行 flutter 应用程序时更改启动画面的 color/theme,以便在应用程序下次启动时本机 android 启动画面加载与 Flutter 应用程序相同的主题?
(对不起,如果我重复了很多,但我想尽可能详细地描述我的问题)
您可以使用某种 SharedPreferences
来保存主题的当前状态。然后return根据你Shared Preferences
中保存的值将想要的主题MaterialApp
。我个人使用 HydratedBloc
包来保存我的应用程序的当前状态,包括主题。
如果您从 Android 文件夹 xml 文件中设置启动画面,那么我想您无法避免编写一些本机代码并将一些主题逻辑放在 Android 子文件夹。另一方面,如果主题逻辑和闪屏都在 main.dart
文件中。然后你可以只存储你想要使用的两个不同的 splashscreens 并添加一些 if-else 语句来显示启动画面并保存用户主题偏爱。如果您不知道如何执行此操作,可以关注此线程:
在您项目文件夹的 android/app/src/main/res
中应该有一个 drawable
文件夹,其中包含用于浅色主题的 launch_background.xml
。复制此文件夹并调用第二个 drawable-night
并配置深色主题样式。它会根据 Android 的系统主题自动更改。
drawable
(浅色主题)文件夹中的launch_background.xml
可以这样构造,以显示白色背景的图像:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<item>
<bitmap
android:gravity="center"
android:src="@drawable/launch_image" />
</item>
</layer-list>
同样可以在 drawable-night
(深色主题)文件夹中的 launch_background.xml
中完成,将 "@android:color/white"
替换为 "@android:color/black"
以获得黑色背景。
请注意,图像必须位于分别使用的 drawable
和 drawable-night
文件夹中。据我所知,格式必须是png。
我发现 this useful article 解决并解释了本机闪屏主题。
能否以编程方式更改本机 android 初始屏幕颜色,以便将其设置为适合为 Flutter 应用选择的主题?
有点像当系统主题设置为深色时,WhatsApp 初始屏幕如何在深色主题中加载。
深色和浅色 WhatsApp 启动画面:
我想这使用了两个主题作为初始屏幕,它们链接到系统主题,但我不太了解如何以及是否可能。
所以问题是:是否可以在 运行 flutter 应用程序时更改启动画面的 color/theme,以便在应用程序下次启动时本机 android 启动画面加载与 Flutter 应用程序相同的主题?
(对不起,如果我重复了很多,但我想尽可能详细地描述我的问题)
您可以使用某种 SharedPreferences
来保存主题的当前状态。然后return根据你Shared Preferences
中保存的值将想要的主题MaterialApp
。我个人使用 HydratedBloc
包来保存我的应用程序的当前状态,包括主题。
如果您从 Android 文件夹 xml 文件中设置启动画面,那么我想您无法避免编写一些本机代码并将一些主题逻辑放在 Android 子文件夹。另一方面,如果主题逻辑和闪屏都在 main.dart
文件中。然后你可以只存储你想要使用的两个不同的 splashscreens 并添加一些 if-else 语句来显示启动画面并保存用户主题偏爱。如果您不知道如何执行此操作,可以关注此线程:
在您项目文件夹的 android/app/src/main/res
中应该有一个 drawable
文件夹,其中包含用于浅色主题的 launch_background.xml
。复制此文件夹并调用第二个 drawable-night
并配置深色主题样式。它会根据 Android 的系统主题自动更改。
drawable
(浅色主题)文件夹中的launch_background.xml
可以这样构造,以显示白色背景的图像:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<item>
<bitmap
android:gravity="center"
android:src="@drawable/launch_image" />
</item>
</layer-list>
同样可以在 drawable-night
(深色主题)文件夹中的 launch_background.xml
中完成,将 "@android:color/white"
替换为 "@android:color/black"
以获得黑色背景。
请注意,图像必须位于分别使用的 drawable
和 drawable-night
文件夹中。据我所知,格式必须是png。
我发现 this useful article 解决并解释了本机闪屏主题。