Jetpack compose custom theme in Preview mode with CompositionLocalProvider

31 Views Asked by At

How to make custom theme in preview mode?

In Theme file I have custom data class with some special colors for black and white theme.

Theme file:

data class AppResources(
 @ColorLong val greyZero: Long,
 @ColorLong val lightModeMainDefault: Long
)
val LightAppResources = AppResources(
 greyZero = 0xFF242323,
 lightModeMainDefault = 0xFFCC0616
)
val DarkAppResources = AppResources(//colors for dark theme)

@Composable
fun JetPackComposeTheme(
val appResources = if (darkTheme) {
        DarkAppResources
    } else {
        LightAppResources
    }
 MaterialTheme(
        colorScheme = colors,
        typography = MaterialTheme.typography,
        shapes = MaterialTheme.shapes
    ) {
        CompositionLocalProvider(
            LocalAppResources provides appResources,
            content = content
        )
    }
)

In @Composable function I use such code to get specific color: Color(LocalAppResources.current.greyZero)

Then I run application in debug mode it works fine.

But how could I use it in @Preview mode, because it doesn't work in preview mode?

Because it expensive to run application every time to see UI changes.

0

There are 0 best solutions below