Create: Update:
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°:
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΆΠ°Π»ΡΡΡΡΡ, ΡΡΠΎ Π½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ "ΡΠ»Π΅ΠΏΠΈΡ Π³Π»Π°Π·Π°". ΠΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΌΠ½ΡΡ ΡΠ΅ΠΌΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ?
// 1. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΠΏΠ°Π»ΠΈΡΡΡ Π΄Π»Ρ ΡΠ²Π΅ΡΠ»ΠΎΠΉ/ΡΡΠΌΠ½ΠΎΠΉ ΡΠ΅ΠΌ
private val DarkColorPalette = darkColors(
primary = Purple200,
surface = Color.Black
)
private val LightColorPalette = lightColors(
primary = Purple500,
surface = Color.White
)
// 2. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ MaterialTheme Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ
@Composable
fun MyApp() {
val isDarkMode = isSystemInDarkTheme()
MaterialTheme(
colors = if (isDarkMode) DarkColorPalette else LightColorPalette
) {
// ΠΠ°Ρ UI
}
}
// 1. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ Π°ΡΡΠ΅ΡΡ Π΄Π»Ρ ΠΎΠ±
// (Π² Assets.xcassets ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Dark ΠΈ Light Π²Π°ΡΠΈΠ°Π½ΡΡ)
// 2. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ @Environment Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
struct ContentView: View {
@Environment(\.colorScheme) var colorScheme
var body: some View {
Text("ΠΡΠΈΠ²Π΅Ρ!")
.foregroundColor(colorScheme == .dark ? .white : .black)
}
}
// Android (ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΎΡΠ° Π² SharedPreferences)
val prefs = remember { context.getSharedPreferences("theme", Context.MODE_PRIVATE) }
val isDarkMode = prefs.getBoolean("dark_mode", isSystemInDarkTheme())
// iOS (UserDefaults)
UserDefaults.standard.set(true, forKey: "darkMode")
primary
, background
), Π° Π½Π΅ ΠΆΡΡΡΠΊΠΈΠ΅ HEX-Π·Π½Π°ΡΠ΅Π½ΠΈΡ.#Π±ΡΡΡ