提问者:小点点

有没有办法根据应用程序主题更改闪屏颜色?


是否可以通过编程方式更改原生android闪屏颜色,以便可以将其设置为适合为Flutter应用程序选择的主题?

有点像当系统主题设置为深色时WhatsApp启动屏幕如何加载深色主题。

深色和浅色WhatsApp闪屏:

我猜这使用了两个与系统主题相关联的闪屏主题,但我不知道这是如何以及是否可能的。

所以问题是:是否可以在运行flutter应用程序时更改闪屏的颜色/主题,以便在应用程序的下一次启动时,原生android闪屏加载与Flutter应用程序相同的主题?

(如果我重复了很多,对不起,但我想尽可能好地描述我的问题)


共3个答案

匿名用户

在你的项目文件夹的android/app/src/main/res中应该有一个可绘制文件夹,其中包含用于浅色主题的launch_background. xml。复制此文件夹并调用第二个可绘制-夜间并配置深色主题样式。它将根据Android的系统主题自动更改。

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>

同样的事情也可以在launch_background. xml中的绘图-night(深色主题)文件夹中完成,将"@android:颜色/白色"替换为"@android:颜色/黑色"作为黑色背景。

请注意,图像必须位于分别使用的可绘制可绘制夜文件夹中。据我所知,格式必须是png。

我发现了这篇有用的文章,它解决并解释了本机闪屏主题。

匿名用户

如果你从Android文件夹xml文件中设置闪屏,那么我猜你无法逃避编写一些Native代码并将一些主题逻辑放在Android子文件夹中。另一方面,如果主题逻辑和闪屏都在main. dart文件中。那么你可以只存储你想要使用的两个不同的闪屏并添加一些if-else语句来显示闪屏并保存用户主题偏好。如果你不知道如何做到这一点,你可以按照这个线程:如何在fluttter中开始加载主题

匿名用户

您可以使用某种SharedPre的来保存主题的当前状态。然后根据保存在您的共享首选项中的值将所需的主题返回到MaterialApp。我个人使用HydratedBloc包来保存我的应用程序的当前状态,包括主题。