0
votes

I have a conditional view based on 2 binding vars in MyBootomSheet. Idea is, show detail view if an item is selected in parent view, else show list of items.

ParentView has the logic to select/unselect item. The code works as expected for the first time. But once an item is selected in the parent view the view never gets updated ever again, even after another item selected or item is unselected.

Any idea how this can be resolved ?

TIA!

struct ParentView: View {
    @StateObject var dataSource = MapViewSource()
    @State var selectedItem:SomeModel? = nil
    
    var body: some View {
     //
    }.bottomSheet() {
    MyBottomSheet(items:self.$dataSource.items, selectedItem:self.$selectedItem)
    }
}

struct MyBottomSheet: View {
    @Binding var items:[SomeModel]
    @Binding var selectedItem:SomeModel?
    
    var body: some View {
        if self.selectedItem != nil {
            ItemDetail(item: self.selectedItem!)
        }
        else {
            List(self.items id: \.itemId) { item in 
               ItemRow(item: item)
            }
        }
    }
}