В View
я могу получить доступ к переменным окружения с помощью оболочки свойства @Environment
следующим образом:
struct MyView: View {
@Environment(\.colorScheme) var colorScheme: Color
var body: some View {
Text("Hello")
.foregroundColor(self.colorScheme == .light ? .black : .white)
}
}
В расширении это невозможно, потому что я не могу поместить переменные в extension
. Как я могу получить доступ к значениям @Environment
в расширении, например, если я хочу расширить Color
?
До сих пор я узнал, что могу использовать Environment
со свойством wrappedValue
, например this:
extension Color {
static var darkModeText: Color {
if Environment(\.colorScheme).wrappedValue == .light {
return .black
} else {
return .white
}
}
}
Проблема в том, что это не обновляется и всегда содержит .light
. Я также пытался использовать @Environment
в качестве глобальной переменной, но это (пока) не поддерживается оболочками свойств.