Sobes.tech
Junior — Middle

Pode-se usar um único componente NavigationLink para gerir múltiplas transições numa aplicação com muitas navegações?

sobes.tech IA

Resposta da IA

No SwiftUI, o componente NavigationLink destina-se a criar uma transição para uma visualização específica. Não é recomendado usar um único NavigationLink para gerir múltiplas transições, pois cada NavigationLink está associado a um destino (objetivo da transição) específico. Para aplicações com muitas navegações, é melhor criar um NavigationLink separado para cada transição ou usar navegação programática com NavigationDestination e NavigationStack, onde a navegação pode ser gerida através do estado (por exemplo, um enum com diferentes telas). Isto proporciona uma navegação mais limpa e gerível.

Exemplo de uso de NavigationStack com navegação programática:

enum Screen {
    case home
    case details
    case settings
}

struct ContentView: View {
    @State private var path = NavigationPath()

    var body: some View {
        NavigationStack(path: $path) {
            VStack {
                Button("Ir para detalhes") {
                    path.append(Screen.details)
                }
                Button("Ir para configurações") {
                    path.append(Screen.settings)
                }
            }
            .navigationDestination(for: Screen.self) { screen in
                switch screen {
                case .home:
                    Text("Tela principal")
                case .details:
                    Text("Tela de detalhes")
                case .settings:
                    Text("Tela de configurações")
                }
            }
        }
    }
}