Version one on the App Store
This commit is contained in:
@@ -16,8 +16,8 @@ class MAThemeManager {
|
||||
}
|
||||
|
||||
init() {
|
||||
let savedValue = UserDefaults.standard.string(forKey: "appColorScheme") ?? "system"
|
||||
colorScheme = AppColorScheme(rawValue: savedValue) ?? .system
|
||||
let savedValue = UserDefaults.standard.string(forKey: "appColorScheme") ?? "dark"
|
||||
colorScheme = AppColorScheme(rawValue: savedValue) ?? .dark
|
||||
}
|
||||
|
||||
var preferredColorScheme: ColorScheme? {
|
||||
@@ -50,6 +50,17 @@ enum AppColorScheme: String, CaseIterable, Identifiable {
|
||||
}
|
||||
}
|
||||
|
||||
var description: String {
|
||||
switch self {
|
||||
case .system:
|
||||
return "Follows your device's appearance"
|
||||
case .light:
|
||||
return "Always use light mode"
|
||||
case .dark:
|
||||
return "Always use dark mode"
|
||||
}
|
||||
}
|
||||
|
||||
var icon: String {
|
||||
switch self {
|
||||
case .system:
|
||||
@@ -74,3 +85,21 @@ extension EnvironmentValues {
|
||||
set { self[ThemeManagerKey.self] = newValue }
|
||||
}
|
||||
}
|
||||
// MARK: - Theme Applied Modifier
|
||||
|
||||
struct ThemeAppliedModifier: ViewModifier {
|
||||
@Environment(\.themeManager) var themeManager
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
content
|
||||
.preferredColorScheme(themeManager.preferredColorScheme)
|
||||
.id(themeManager.colorScheme) // Force refresh when theme changes
|
||||
}
|
||||
}
|
||||
|
||||
extension View {
|
||||
func applyTheme() -> some View {
|
||||
modifier(ThemeAppliedModifier())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user