'Jetpack Compose Getting Light vs Dark Mode from MaterialTheme Using Material 3
With Jetpack Compose, using Material 2, you can see if a theme is in light mode easily with the following
val light = MaterialTheme.colors.isLight
Using Material 3, I don't see this ability. Is there a way to do this with a Material 3 theme?
Solution 1:[1]
Found a solution. Color in Compose has a built in method luminance that returns the relative luminance as a float between 0 and 1. I wrote an extension function for ColorScheme that returns true if the luminance of the background is greater than 0.5.
@Composable
fun ColorScheme.isLight() = this.background.luminance() > 0.5
Using it as:
val isLight = MaterialTheme.colorScheme.isLight()
Now whether the system is in dark mode doesn't matter, only the theme.
Solution 2:[2]
In JetpackCompose you can use this method that returns if the light / dark mode is enabled or not
isSystemInDarkTheme()
And then in your code
if (isSystemInDarkTheme()){} \\Dark mode enabled
else {} //Light mode enabled
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Khantahr |
| Solution 2 | Immanuel Diaz |
