NavigationBar gone when source view updates during animation

Hi everyone,

I have a simple setup of two views. Tapping a button on the first view, opens the second view in a NavigationView. I want to hide the NavigationBar on the first view and show it on the second. So far so good.

It can happen that the first view updates during the animation of one view to the next. When this happens, the NavigationBar is also hidden on the second view.

I put together this code. You can copy-paste it to an empty project's ContentView-file to see what I mean.

Does anyone have a good idea of how to fix it?

import SwiftUI

struct ContentView: View {

    @State var showsExtraText = false
    @State var showsNextScreen = false

    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(
                    destination:
                        Text("Destination")
                        .navigationTitle("Hallo")
                    ,
                    isActive: $showsNextScreen,
                    label: {
                        Button("Press me") {
                            showsNextScreen = true

                            // The following lines are for demonstration purposes
                            // I the real app, the update is caused by a backend call finishing.
                            DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
                                self.showsExtraText.toggle()
                            }
                        }
                    })

                if showsExtraText {
                    Text("Extra text")
                }
            }
            .navigationBarHidden(true)
        }
    }
}

struct ContentView_Previews: PreviewProvider {

    static var previews: some View {
        ContentView()
    }
}
NavigationBar gone when source view updates during animation
 
 
Q