Uso de Estado e Dependência
August 26, 2025 · View on GitHub
AppState fornece ferramentas poderosas para gerenciar o estado de toda a aplicação e injetar dependências em visualizações SwiftUI. Ao centralizar seu estado e dependências, você pode garantir que sua aplicação permaneça consistente e de fácil manutenção.
Visão Geral
- Estado: Representa um valor que pode ser compartilhado em toda a aplicação. Os valores de estado podem ser modificados e observados em suas visualizações SwiftUI.
- Dependência: Representa um recurso ou serviço compartilhado que pode ser injetado e acessado em visualizações SwiftUI.
Principais Características
- Estado Centralizado: Defina e gerencie o estado de toda a aplicação em um só lugar.
- Injeção de Dependência: Injete e acesse serviços e recursos compartilhados em diferentes componentes da sua aplicação.
Exemplo de Uso
Definindo o Estado da Aplicação
Para definir o estado de toda a aplicação, estenda o objeto Application e declare as propriedades de estado.
import AppState
struct User {
var name: String
var isLoggedIn: Bool
}
extension Application {
var user: State<User> {
state(initial: User(name: "Guest", isLoggedIn: false))
}
}
Acessando e Modificando o Estado em uma Visualização
Você pode acessar e modificar os valores de estado diretamente em uma visualização SwiftUI usando o property wrapper @AppState.
import AppState
import SwiftUI
struct ContentView: View {
@AppState(\.user) var user: User
var body: some View {
VStack {
Text("Olá, \(user.name)!")
Button("Fazer login") {
user.name = "John Doe"
user.isLoggedIn = true
}
}
}
}
Definindo Dependências
Você pode definir recursos compartilhados, como um serviço de rede, como dependências no objeto Application. Essas dependências podem ser injetadas em visualizações SwiftUI.
import AppState
protocol NetworkServiceType {
func fetchData() -> String
}
class NetworkService: NetworkServiceType {
func fetchData() -> String {
return "Data from network"
}
}
extension Application {
var networkService: Dependency<NetworkServiceType> {
dependency(NetworkService())
}
}
Acessando Dependências em uma Visualização
Acesse as dependências em uma visualização SwiftUI usando o property wrapper @AppDependency. Isso permite injetar serviços como um serviço de rede em sua visualização.
import AppState
import SwiftUI
struct NetworkView: View {
@AppDependency(\.networkService) var networkService: NetworkServiceType
var body: some View {
VStack {
Text("Dados: \(networkService.fetchData())")
}
}
}
Combinando Estado e Dependências em uma Visualização
Estado e dependências podem trabalhar juntos para construir uma lógica de aplicação mais complexa. Por exemplo, você pode buscar dados de um serviço e atualizar o estado:
import AppState
import SwiftUI
struct CombinedView: View {
@AppState(\.user) var user: User
@AppDependency(\.networkService) var networkService: NetworkServiceType
var body: some View {
VStack {
Text("Usuário: \(user.name)")
Button("Buscar Dados") {
user.name = networkService.fetchData()
user.isLoggedIn = true
}
}
}
}
Melhores Práticas
- Centralize o Estado: Mantenha o estado de toda a sua aplicação em um só lugar para evitar duplicação e garantir a consistência.
- Use Dependências para Serviços Compartilhados: Injete dependências como serviços de rede, bancos de dados ou outros recursos compartilhados para evitar um acoplamento forte entre os componentes.
Conclusão
Com o AppState, você pode gerenciar o estado de toda a aplicação e injetar dependências compartilhadas diretamente em suas visualizações SwiftUI. Este padrão ajuda a manter sua aplicação modular e de fácil manutenção. Explore outras funcionalidades da biblioteca AppState, como SecureState e SyncState, para aprimorar ainda mais o gerenciamento de estado da sua aplicação.
Esta tradução foi gerada automaticamente e pode conter erros. Se você é um falante nativo, agradecemos suas contribuições com correções por meio de um Pull Request.