Objetos de entorno
Parte de la sección Introducción a SwiftUI del Journey de Swift de Coddy. Lección 41 de 50.
Pasar un objeto por cada vista hasta llegar a la que lo necesita se vuelve tedioso. En su lugar, colócalo en el entorno, y cualquier vista descendiente podrá leerlo:
@StateObject private var cart = Cart()
var body: some View {
NavigationStack {
ShopView()
}
.environmentObject(cart)
}Una vista más abajo declara lo que necesita con @EnvironmentObject, sin un valor inicial:
struct CartBadge: View {
@EnvironmentObject var cart: Cart
var body: some View {
Text("\(cart.count) in cart")
}
}ShopView nunca menciona el carrito, pero CartBadge dentro de ella sigue obteniendo el mismo objeto. Si ninguna vista superior se lo proporciona mediante .environmentObject, la aplicación se detiene con un error cuando se muestra CartBadge.
Desafío
IntermedioCartBadge debería mostrar el recuento del carrito compartido. Proporciona cart a VStack con .environmentObject y cambia CartBadge para que lo lea con @EnvironmentObject. La insignia debe leer 1 in cart después de un toque.
Pruébalo tú mismo
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Introducción a SwiftUI
2Mostrar contenido
Vistas de textoNúmeros en el textoFuentesColoresSF SymbolsRepaso: etiqueta de precioPractica por tu cuenta: Playground de Swift