Jetpack Compose 使用 Material 从 Material 主题获取浅色与深色模式 3

Jetpack Compose Getting Light vs Dark Mode from MaterialTheme Using Material 3

使用 Jetpack Compose,使用 Material 2,您可以使用以下内容轻松查看主题是否处于轻量模式

val light = MaterialTheme.colors.isLight

使用Material3,没看到这个能力。有没有办法用 Material 3 主题来做到这一点?

在 JetpackCompose 中,您可以使用此方法 returns 如果是否启用亮/暗模式

isSystemInDarkTheme()

然后在你的代码中

if (isSystemInDarkTheme()){} \Dark mode enabled
else {} //Light mode enabled 

找到解决办法。 Compose 中的 Color 有一个内置方法 luminance returns 相对亮度作为 0 和 1 之间的浮点数。我为 ColorScheme 写了一个扩展函数 returns 如果背景亮度大于 0.5,则为真。

@Composable
fun ColorScheme.isLight() = this.background.luminance() > 0.5

用作:

val isLight = MaterialTheme.colorScheme.isLight()

现在系统是否处于深色模式并不重要,重要的是主题。