Lista SwiftUI com várias colunas

Aug 21 2020

Estou procurando o equivalente a um bloco inline html no swiftui. Basicamente, quero que funcione exatamente como a lista - mas apenas envolva se for exceder a linha - por exemplo

WrappingList( items ) {
    Text( "item.name") 
}

mas estou achando muito mais difícil do que pensei. Eu realmente quero que a lista de coisas traga para a mesa - ou seja, atualizações incrementais e rolagem, mas não consigo encontrar uma maneira de mapeá-la no estilo declarativo rápido. Em linguagens onde você adicionou controles processualmente, é trivial:

current_x = 0
current_y = 0
foreach (var item in items ) 
{
    control = create_control_for( item )
    biggest_y = max( current_y + control.height, biggest_y)
    if (control.width + current_x > width) 
    {
        current_x=0;
        current_y = biggest_y;
    }
    control.position = (current_x, current_y)
}

mas swift parece querer fazer coisas em hstacks ou vstacks e eu realmente não sei como fazer isso e ainda manter as propriedades de uma lista - particularmente sem saber o tamanho das coisas com antecedência - ou seja, não quero uma grade fixa .

Essa funcionalidade já existe? Caso contrário, existe uma maneira de mapear a linha de código acima no SwiftUI?

Respostas

DarrenOakey Sep 15 2020 at 08:15

apenas para que haja uma resposta aqui - o comentário acima de asperi funcionou muito bem - vinculando a este artigo de estouro de pilha