EnvironmentKey
protocol · iOS 13.0+ · SDK 27.1
protocol EnvironmentKeyA key for accessing values in the environment. You can create custom environment values by extending the ``EnvironmentValues`` structure with new properties. First declare a new environment key type and specify a value for the required ``defaultValue`` property: private struct MyEnvironmentKey: EnvironmentKey { static let defaultValue: String = "Default value" } The Swift compiler automatically infers the associated ``Value`` type as the type you specify for the default value. Then use the key to define a new environment value property: extension EnvironmentValues { var myCustomValue: String { get { self[MyEnvironmentKey.self] } set { self[MyEnvironmentKey.self] = newValue } } } Clients of your environment value never use the key directly. Instead, they use the key path of your custom environment value property. To set the environment value for a view and all its subviews, add the ``View/environment(_:_:)`` view modifier to that view: MyView() .environment(\.myCustomValue, "Another string") As a convenience, you can also define a dedicated view modifier to apply this environment value: extension View { func myCustomValue(_ myCustomValue: String) -> some View { environment(\.myCustomValue, myCustomValue) } } This improves clarity at the call site: MyView() .myCustomValue("Another string") To read the value from inside `MyView` or one of its descendants, use the ``Environment`` property wrapper: struct MyView: View { @Environment(\.myCustomValue) var customValue: String var body: some View { Text(customValue) // Displays "Another string". } }
Members (0)
This type has no directly callable members in this snapshot. See the framework’s skipped declarations for unsupported APIs.
Skipped declarations
No declarations were skipped in this snapshot.