Menu
Coddy logo textTech

Objetos de ambiente

Parte da seção Introdução ao SwiftUI do Journey de Swift da Coddy. Lição 41 de 50.

Passar um objeto por todas as views até chegar àquela que precisa dele fica cansativo. Em vez disso, coloque-o no ambiente, e qualquer view abaixo poderá lê-lo:

@StateObject private var cart = Cart()

var body: some View {
    NavigationStack {
        ShopView()
    }
    .environmentObject(cart)
}

Uma view mais abaixo declara o que precisa com @EnvironmentObject, sem um valor inicial:

struct CartBadge: View {
    @EnvironmentObject var cart: Cart

    var body: some View {
        Text("\(cart.count) in cart")
    }
}

ShopView nunca menciona o carrinho, mas CartBadge dentro dele ainda recebe o mesmo objeto. Se nenhuma view acima fornecer esse objeto com .environmentObject, o app será interrompido com um erro quando CartBadge for exibido.

challenge icon

Desafio

Médio

CartBadge deve mostrar a contagem do carrinho compartilhado. Forneça cart ao VStack com .environmentObject e altere CartBadge para lê-lo com @EnvironmentObject. O emblema deve mostrar 1 in cart após um toque.

Experimente você mesmo

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao SwiftUI

Pratique por conta própria: Playground de Swift