SwiftUI || O que é o wrapper da propriedade @State?
Em SwiftUI, @Stategeralmente é usado em uma estrutura para declarar uma propriedade cujo valor pode mudar com o tempo e que pode acionar a renderização novamente da exibição quando o valor é atualizado.
Quando devemos usar @state?
Devemos usar o @Statewrapper de propriedade no SwiftUI sempre que tivermos uma propriedade que precise ser mutável e cujas alterações devam fazer com que a exibição seja atualizada automaticamente.
Em outras palavras, você deve usar @Statepara propriedades que fazem parte do estado interno da exibição e
pode mudar ao longo do tempo como resultado da interação do usuário ou outros eventos. Exemplos de propriedades que podem usar @Stateincluem
- A guia selecionada em uma exibição de guia
- O progresso atual de um indicador de carregamento
- O texto em um campo de texto
- O estado de uma alternância ou interruptor
- A página atual em uma exibição de página
É importante observar que @Statedeve ser usado apenas para propriedades que fazem parte do estado interno da exibição. Se você precisar gerenciar o estado compartilhado entre várias exibições ou componentes, deverá usar outros wrappers de propriedade, como @Binding, @ObservedObjectou @EnvironmentObject.
Vamos dar um exemplo
Quando você declara uma propriedade com o @Statewrapper de propriedade em um struct, o valor dessa propriedade é armazenado em um local de memória separado fora do struct e o struct obtém uma referência a esse valor. Isso permite que a exibição seja renderizada novamente automaticamente quando o valor da @Statepropriedade for alterado, sem exigir que a exibição seja reinicializada.
Aqui está um exemplo de como @Statepode ser usado em uma estrutura no SwiftUI:
struct ContentView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Count: \(count)")
Button("Increment Count") {
count += 1
}
}
}
}
Como usamos o @Statewrapper de propriedade para declarar a countvariável, qualquer alteração na countvariável acionará a renderização novamente da exibição, que atualizará o valor exibido da Textexibição.
Este é um exemplo básico de como @Stateas propriedades podem ser usadas no SwiftUI. @StateAs propriedades são muito úteis para gerenciar o estado em aplicativos SwiftUI, pois permitem criar exibições dinâmicas que podem responder a alterações nos dados.
Outro exemplo de problema da vida real
struct ContentView: View {
@State private var username: String = ""
@State private var password: String = ""
@State private var rememberMe: Bool = false
@State private var loginError: Bool = false
var body: some View {
VStack {
TextField("Username", text: $username)
.padding()
SecureField("Password", text: $password)
.padding()
Toggle("Remember Me", isOn: $rememberMe)
.padding()
Button("Log In") {
// Perform login logic here...
if username == "user" && password == "password" {
// Successful login
loginError = false
} else {
// Failed login
loginError = true
}
}
.alert(isPresented: $loginError) {
Alert(title: Text("Error"), message: Text("Invalid username or password"), dismissButton: .default(Text("OK")))
}
}
.padding()
}
}
Codificação feliz !





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)