SwiftUI sheet doesn't access the latest value of state variables on first appearance
02:55 27 Oct 2020

It seems like the state variable are not properly updated when a sheet is displayed for the first time.

For instance with this code:

import SwiftUI

struct DemoView: View {
    @State var showDetails: Bool = false
    var body: some View {
        VStack {
            Button(action: {
              showDetails = true
            }) {
                Text("Show sheet")
            }
        }.sheet(isPresented: $showDetails){
            VStack {
                Text("showDetails: \(showDetails ? "yes" : "no")")
            }
        }
    }
}

struct DemoView_Previews: PreviewProvider {
    static var previews: some View {
        DemoView()
    }
}

This will display "no" on first click, and "yes" on second, as showcased here:

enter image description here

Am I missing something? How can I make sure my state variables are properly read by the sheet view?

ios swift swiftui