SwiftUI: Do czego służy @Environment?

Opublikowano: 13.01.2024 - tagi: SwiftUI Swift Widok Wrapper Dane System

Czym jest @Environment?

SwiftUI pozwala widokowi na pobranie informacji o urządzeniu. Na przykład: jaki motyw graficzny ma ustawiony na swoim telefonie: jasny czy ciemny? Jakiego język jest ustawiony na urządzeniu?

Pozyskując takie informacje, możesz wykorzystać je w swojej aplikacji.

Za pobranie informacji systemowych odpowiedzialny jest wrapper: @Environment.

Pełną listę informacji, jakie możesz pobrać znajdziesz w EnvironmentValues

Przykład

import SwiftUI

struct ContentView: View {
    @Environment(\.colorScheme) private var colorScheme
    
    var body: some View {
        VStack {
            Button(colorScheme == .light ? "Light" : "Dark") {
                
            }
            .frame(width: 100, height: 50)
            .foregroundColor(colorScheme == .light ? .white : .black)
            .background(colorScheme == .light ? .black : .white)
        }
    }
}

W tym przykładzie za pomocą @Environment pobierana jest wartość z colorScheme, która zawiera informację, jaki motyw graficzny jest ustawiony w urządzeniu.

Na podstawie tego stylizowany jest odpowiednio przycisk.