Как добавить объект на экран через кнопку add

Всем добрый вечер:

Вопрос в следующем, в моем проекте на SwiftUI возникла проблема, не понимаю как добавить объект через кнопку на экран с товарами.

Подробнее:

У меня уже есть листинг товаров: Листинг товаров При нажатии на любой из товаров, я открываю через .sheet информацию о товаре(условно), а далее есть две кнопки, закрыть и add, Sheet с товаром закрыть работает, но мне нужно понять, как реализовать так, чтобы через кнопку add товар добавлялся на view с отображением товаров в стиле Row. Row товара я уже сверстал, есть логика CarManager:

import Foundation

class CartManager: ObservableObject {
    @Published private(set) var products: [Product] = []
    
    func addToCart(product: Product) {
        products.append(product)
    }
    
    func removeFromCart(product: Product) {
        products = products.filter { $0.id != product.id }
    }
}

Вот сам код, который отвечает за .sheet при клике на товар из листинга:

struct ProductDetailSheet: View {
    
    
    let product: Product
    @Binding var isSheetPresented: Product?
    @State private var amount = 1
    
    var body: some View {
        VStack{
            VStack {
                Image(product.image)
                Spacer()
                Text(product.name)
                    .presentationDetents([.height(200)])
                    .presentationBackgroundInteraction(.enabled(upThrough: .medium))
            }
            HStack{
                Button("Close") {
                    isSheetPresented = nil
                }
                Spacer()
                Button("Add") {
                    isSheetPresented = nil
                }
                Spacer()
                Stepper("Enter an amount: \(amount)", value: $amount, in: 0...200)
              
            }
        }
        .padding()
    }
}

#Preview {
    PackingList()
}

Вот кусок кода View с товаром в стиле Row

  import SwiftUI
    
    struct ProductRow: View {
        
        var product: Product
        
        var body: some View {
            HStack(spacing: 20) {
                Image(product.image)
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 50)
                    .cornerRadius(10)
                VStack(alignment: .leading, spacing: 10) {
                    Text(product.name)
                        .bold()
                }
                
                Spacer()
                
                Image(systemName: "trash")
                    .foregroundColor(Color(hue: 1.0, saturation: 0.89, brightness: 0.835))
            }
            .padding(.horizontal)
            .frame(maxWidth: .infinity, alignment: .leading)
        }
    }
    
    #Preview {
        ProductRow(product: productRaid[0])
    }

И в этот экран мне надо передать товар по клику на кнопку .add из .sheet из view листинга

import SwiftUI

struct Recommended: View {
    var body: some View {
        Text("1")
            .foregroundStyle(.white)
    }
}

#Preview {
    Recommended()
}

Как мне это реализовать? В какую сторону копать? Буду сильно благодарен всем, кто поделится информацией о том, как мне это реализовать.


Ответы (0 шт):