Переменная среды доступа в расширениях - PullRequest
0 голосов
/ 06 апреля 2020

В 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 в качестве глобальной переменной, но это (пока) не поддерживается оболочками свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...