访问扩展中的环境变量

Lup*_*rus 9 swiftui

在 a 中View,我可以使用属性包装器访问环境变量,@Environment如下所示:

\n\n
struct MyView: View {\n\n    @Environment(\\.colorScheme) var colorScheme: Color\n\n    var body: some View {\n        Text("Hello")\n            .foregroundColor(self.colorScheme == .light ? .black : .white)\n\xc2\xa0   }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在扩展中,这是不可能的,因为我无法将变量放入extension. 如何访问@Environment扩展中的值,例如如果我想扩展Color

\n\n

直到现在我发现,我可以像这样使用该Environment属性wrappedValue

\n\n
extension Color {\n    static var darkModeText: Color {\n        if Environment(\\.colorScheme).wrappedValue == .light {\n            return .black\n        } else {\n            return .white\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是,这不会更新并且始终包含.light. 我还尝试使用@Environment作为全局变量,但这(尚未)受到属性包装器的支持。

\n