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.
Desafio
MédioCartBadge 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()
}
}
}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
4Modificadores
PreenchimentoPlanos de fundoOrdem dos modificadoresMolduras e formasRecapitulação - Criador de distintivos10Projeto - Coddy Coffee
Visão geral do projetoTelas de bebidas5Estado e Botões
BotõesA Propriedade @StateEstado Verdadeiro ou FalsoViews CondicionaisRecapitulação - Marcador de Pontos6Entrada do Usuário
Campo de TextoAlternânciaControle Deslizante e IncrementalSeletorRevisão - Formulário de Pedido9Compartilhando Dados
A propriedade @BindingObjetos observáveisObjetos de ambienteRecapitulação — Contador de passosPratique por conta própria: Playground de Swift