1
resposta

Gerenciamento de Estado no Swift UI

Olá, em uma das aulas o professor falou que pode colocar uma cor na variável e usar sempre a mesma variável. Além das cores, queria gerenciar o nome da fonte, o valor do espaçamento do padding, valores do end point, Json, API, entre todas as paginas... Como que faço o gerenciamento de estado no Swift UI? Igual a que temos no Redux ou Context Api no React. Obrigado!

1 resposta

Oi Weverton, tudo bem?

No SwiftUI temos o que chamamos de property wrappers, que nos permitem declarar exatamente como nossos dados são observados, renderizados e modificados pelas views da aplicação.

Nesse caso, utilizamos muito do StateObject e Published. Vamos supor que você tem uma classe representando os dados e as regras de negócio da sua aplicação, e toda vez que algo dessa classe mudar, você precisa refletir as alterações na sua view, certo?

Para isso, na sua view, você utiliza a propriedade StateObject para monitorar essas alterações da classe, enquanto na classe em questão você utiliza o Published para determinar qual variável deve ser "publicada" para que a view possa fazer alterações sobre ela.

Veja o exemplo de código abaixo:

class UserProgress: ObservableObject {
    @Published var score = 0
}

struct ContentView: View {
    @StateObject var progress: UserProgress

    var body: some View {
        VStack {
            Text("Sua pontuação é de \(progress.score)")
                Button("Aumentar pontuação") {
                progress.score += 1
            }
        }
    }
}

Observação: usamos o StateObject apenas na view inicial (content view), caso precise usar em outras subviews, é necessário usar o ObservedObject.

Podemos usar o EnvironmentObject para questões referentes ao ambiente.

Espero ter ajudado, abraços!