Imagine que você precise criar uma tela de exibição de items como fotos ou cards de comidas como os apps de delivery, pois então com certeza o GridView irá lher ajudar e muito na construção.
GridView.count
A maneira mais simples de implementarmos o GridView é através do construtor GridView.count()
. Com ele é possível já termos uma exibição de grid, como o código de exemplo abaixo:
GridView.count( crossAxisCount: 2, children: List.generate(10, (index) { return Container( child: Card( color: Colors.grey, ), ); }), );
Neste exemplo vemos a presença de um atributo chamado crossAxisCount
esse atributo delimita quantas colunas teremos na grid, que no exemplo são duas.
No children
estamos passando o List.generate
este o qual sua função é replicar as grades que estão sendo demonstradas, neste exemplo colocamos 10 grades, que irão apresentar o nosso container
, conforme exemplo ilustrado abaixo:
GridView.builder
O GridView.builder é utilizado para requisições de itens em API, no qual não se temos ao certo o número exato de retorno. Através dele podemos ter uma melhor performance em nossas aplicações, pois ele vai trabalhar sob demanda.
Um dos atributos do builder é o gridDelegate
que é responsável pelo controle de nossa grid, nele podemos passar a instância do SliverGridDelegateWithFixedCrossAxisCount
, que neste caso vamos fixar a nossa grade em 2 colunas passando crossAxisCount:2
.
Os outros dois atributos do nosso builder que são importantes é o itemCount
que vamos passar a quantidade de itens que nossa requisição a API trouxe, e o itemBuilder
que é onde vamos passar os itens para serem apresentados em widget.
Abaixo exemplo de um código de um GridView.builder
recebendo itens da API Dog.
GridView.builder( padding: EdgeInsets.all(12), gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2), itemCount:_dogAPIStore.dogAPI.message.length, itemBuilder: (context, index) { return Column( children: [ DogItem( imageDog:_dogAPIStore.dogAPI.message[index] .toString(), heigth: 0.2, width: 0.4, ), ],); }),
O widget DogItem
será o que representará cada item vindo da API, nele criamos um atributo para receber a imagem, e os outros dois atributos para setar a altura e largura.
Exemplo em execução:
Top comments (1)
Não tem uma forma de criar uma Gridview em uma sequência de uma card em cima do outro.?