Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como criar e usar @StateObject no SwiftUI

O @StateObject é uma propriedade usada no SwiftUI, o framework de desenvolvimento de interfaces da Apple, para gerenciar o estado de um objeto observável. Ele é essencial para a criação de aplicativos reativos e dinâmicos, permitindo que as mudanças no estado do objeto sejam refletidas automaticamente na interface do usuário. Este artigo irá explorar a importância do @StateObject, como ele se diferencia de outras propriedades, como @ObservedObject e @State, e fornecer exemplos práticos de como utilizá-lo em seus projetos.

Exemplos:

Exemplo 1: Criando um Modelo de Dados com @StateObject

Primeiro, vamos criar um modelo de dados que será observado pela interface do usuário.

import SwiftUI
import Combine

class Contador: ObservableObject {
    @Published var valor: Int = 0
}

struct ContentView: View {
    @StateObject private var contador = Contador()

    var body: some View {
        VStack {
            Text("Valor: \(contador.valor)")
                .padding()

            Button(action: {
                contador.valor += 1
            }) {
                Text("Incrementar")
            }
        }
    }
}

Neste exemplo, Contador é uma classe que conforma ao protocolo ObservableObject, e a propriedade valor é anotada com @Published para que qualquer mudança seja notificada aos ouvintes. Na ContentView, usamos @StateObject para criar uma instância do Contador que será gerenciada pelo SwiftUI.

Exemplo 2: Comparando @StateObject com @ObservedObject

Para entender melhor a diferença entre @StateObject e @ObservedObject, considere o seguinte exemplo:

import SwiftUI
import Combine

class Contador: ObservableObject {
    @Published var valor: Int = 0
}

struct DetalheView: View {
    @ObservedObject var contador: Contador

    var body: some View {
        Text("Valor: \(contador.valor)")
            .padding()
    }
}

struct ContentView: View {
    @StateObject private var contador = Contador()

    var body: some View {
        VStack {
            DetalheView(contador: contador)

            Button(action: {
                contador.valor += 1
            }) {
                Text("Incrementar")
            }
        }
    }
}

Aqui, DetalheView usa @ObservedObject para observar as mudanças no Contador passado como parâmetro. A diferença crucial é que @StateObject é usado para criar e gerenciar a instância do objeto, enquanto @ObservedObject é usado para observar um objeto que é gerenciado em outro lugar.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.