1+ package io.sohil876.testappktx.ui.theme
2+
3+ import android.app.Activity
4+ import android.os.Build
5+ import androidx.compose.foundation.isSystemInDarkTheme
6+ import androidx.compose.material3.MaterialTheme
7+ import androidx.compose.material3.darkColorScheme
8+ import androidx.compose.material3.dynamicDarkColorScheme
9+ import androidx.compose.material3.dynamicLightColorScheme
10+ import androidx.compose.material3.lightColorScheme
11+ import androidx.compose.runtime.Composable
12+ import androidx.compose.runtime.SideEffect
13+ import androidx.compose.ui.graphics.toArgb
14+ import androidx.compose.ui.platform.LocalContext
15+ import androidx.compose.ui.platform.LocalView
16+ import androidx.core.view.WindowCompat
17+
18+ private val DarkColorScheme =
19+ darkColorScheme(primary = Purple80 , secondary = PurpleGrey80 ,
20+ tertiary = Pink80 )
21+
22+ private val LightColorScheme =
23+ lightColorScheme(primary = Purple40 , secondary = PurpleGrey40 ,
24+ tertiary = Pink40
25+
26+ /* Other default colors to override
27+ background = Color(0xFFFFFBFE),
28+ surface = Color(0xFFFFFBFE),
29+ onPrimary = Color.White,
30+ onSecondary = Color.White,
31+ onTertiary = Color.White,
32+ onBackground = Color(0xFF1C1B1F),
33+ onSurface = Color(0xFF1C1B1F),
34+ */ )
35+
36+ @Composable
37+ fun MyComposeApplicationTheme (darkTheme : Boolean = isSystemInDarkTheme(),
38+ // Dynamic color is available on Android 12+
39+ dynamicColor : Boolean = true,
40+ content : @Composable () -> Unit
41+ ) {
42+ val colorScheme = when {
43+ dynamicColor && Build .VERSION .SDK_INT >= Build .VERSION_CODES .S -> {
44+ val context = LocalContext .current
45+ if (darkTheme) dynamicDarkColorScheme(
46+ context) else dynamicLightColorScheme(context)
47+ }
48+
49+ darkTheme -> DarkColorScheme
50+ else -> LightColorScheme
51+ }
52+ val view = LocalView .current
53+ if (! view.isInEditMode) {
54+ SideEffect {
55+ val window = (view.context as Activity ).window
56+ window.statusBarColor = colorScheme.primary.toArgb()
57+ WindowCompat .getInsetsController(window,
58+ view).isAppearanceLightStatusBars = darkTheme
59+ }
60+ }
61+
62+ MaterialTheme (colorScheme = colorScheme, typography = Typography ,
63+ content = content)
64+ }
0 commit comments