refactor: abstract colourScheme into common code

This commit is contained in:
LavaDesu 2025-04-29 22:54:23 +10:00
parent 121b2bb555
commit fa81dd8c0f
Signed by: cilly
GPG key ID: 6500251E087653C9
3 changed files with 34 additions and 35 deletions

View file

@ -1,7 +1,7 @@
package moe.lava.banksia.native
import android.os.Build
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
@ -10,12 +10,10 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
@Composable
actual fun BanksiaTheme(
actual fun BanksiaTheme.colors(
darkTheme: Boolean,
dynamicColor: Boolean,
content: @Composable (() -> Unit)
) {
val colorScheme = when {
dynamicColor: Boolean
): ColorScheme = when {
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
val context = LocalContext.current
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
@ -24,9 +22,3 @@ actual fun BanksiaTheme(
darkTheme -> darkColorScheme()
else -> lightColorScheme()
}
MaterialTheme(
colorScheme = colorScheme,
content = content
)
}

View file

@ -1,12 +1,27 @@
package moe.lava.banksia.native
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
@Composable
expect fun BanksiaTheme(
fun BanksiaTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
// Dynamic color is available on Android 12+
dynamicColor: Boolean = true,
content: @Composable () -> Unit
content: @Composable (() -> Unit)
) {
MaterialTheme(
colorScheme = BanksiaTheme.colors(darkTheme, dynamicColor),
content = content
)
}
@Composable
expect fun BanksiaTheme.colors(darkTheme: Boolean, dynamicColor: Boolean): ColorScheme
object BanksiaTheme {
val colors: ColorScheme
@Composable
get() = colors(isSystemInDarkTheme(), true)
}

View file

@ -1,23 +1,15 @@
package moe.lava.banksia.native
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
@Composable
actual fun BanksiaTheme(
actual fun BanksiaTheme.colors(
darkTheme: Boolean,
dynamicColor: Boolean,
content: @Composable (() -> Unit)
) {
val colorScheme = when {
dynamicColor: Boolean
): ColorScheme = when {
darkTheme -> darkColorScheme()
else -> lightColorScheme()
}
MaterialTheme(
colorScheme = colorScheme,
content = content
)
}