Eu tenho um enum que trata do tema do meu aplicativo. Gostaria de ter uma .system
opção onde retornasse um valor diferente dependendo do tema do sistema (claro ou escuro). Abaixo está como eu implementei, código irrelevante removido:
enum Theme: String, CaseIterable, Identifiable, Codable {
case system
case dark
case light
/* more cases */
var mainColor: Color {
@Environment(\.colorScheme) var colorScheme
switch self {
case .system: return colorScheme == .dark ? .dark : .light
default: return Color(rawValue)
}
}
}
Porém, quando o executo, recebo o erro Accessing Environment<ColorScheme>'s value outside of being installed on a View. This will always read the default value and will not update
. Isso faz sentido, pois obviamente o enum não é uma visualização. Dito isso, como posso acessar a colorScheme
variável de ambiente do meu enum? Ou existe uma maneira diferente de fazer isso?