Несколько одинаковых View в LazyVGrid

Есть задача, реализовать вьюшку с несколькими элементами внутри в виде плитки разделённых на группы. Для этого использовал LazyVGrid и Section. Рисует отлично, но во в группах могут попадаться повторяющиеся элементы. Из-за этого оно крешится с ошибкой:

Fatal error: each layout item may only occur once: file SwiftUI, line 0
2021-04-26 11:35:24.956495+0300 Homfy[18490:290813] Fatal error: each layout item may only occur once: file SwiftUI, line 0

Мой пример кода:

LazyVGrid(columns: rows, alignment: .leading) {
                ForEach (facility.floors) { floor in
                    Section(
                        header: Text(floor.name)
                            .foregroundColor(.white)
                            .font(.system(size: 14))
                    ) {
                        ForEach(floor.neighbors, id: \.self.id) { item in
                            NeigborItemView(neighbor: item)
                        }
                    }
                }
            }

Не могу придумать способа как обойти эту проблему без особых костылей, т.к. мы можем использовать VStack и HStack, но это решение не очень.

P.S. Изначально помогало добавить вьюшке .id(UUID()), но пока не проскролишь список до определённого момента, при расширении списка и это уже не помогает.


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

Автор решения: Valeriy

Нашел вот такое не совсем красивое, но всё же решение, мы переносим LazyVGrid на один уровень ниже:

ForEach (facility.floors) { floor in
                LazyVGrid(columns: rows, alignment: .leading) {
                    Section(
                        header: Text(floor.name)
                            .foregroundColor(.white)
                            .font(.system(size: 14))
                    ) {
                        ForEach(floor.neighbors, id: \.self.id) { item in
                            NeigborItemView(neighbor: item)
                        }
                    }
                }
            }

Вроде работает нормально, но как по мне должно быть более изящное решение.

→ Ссылка