Orientação gerada a partir de informações públicas. Apenas para referência.
Um pacote Flutter que oferece uma variedade de layouts de grade personalizáveis, incluindo dispostos em padrão desalinhado, mosaico, retalhado e entrelaçado. Ele estende a funcionalidade padrão do GridView para suportar tamanhos irregulares de itens e arranjos dinâmicos, ideal para criar exibições visuais envolventes, como galerias de fotos ou listas de produtos. O pacote é leve, bem documentado e compatível com todas as principais plataformas.
Casos de uso
Interfaces de galeria de fotos
Layouts de lista de produtos
Grade de conteúdo dinâmico
Designs de interface criativos
Layouts de feed de mídia social
Principais recursos
Suporta layouts em estagio e masonry
Dimensões personalizáveis do item
Desempenho de rolagem suave
Compatibilidade multiplataforma
Configuração de grade flexível
Suporte de animação embutido
Indicado para
Desenvolvedores construindo aplicativos com foco visual
Designers procurando padrões de grade únicos
Aplicativos que exigem layouts de conteúdo responsivos
Projetos com itens de tamanho variável
Equipes priorizando acabamento da UI
Considerações
Pode exigir testes cuidadosos de layout em telas pequenas
O desempenho pode degradar-se com conjuntos de dados muito grandes
Controles limitados de espaçamento interno de itens
Não ideal para malhas uniformes simples
Requer compreensão dos princípios de layout personalizados
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
flutter_staggered_grid_view
Provides a collection of Flutter grids layouts.
Getting started
In the pubspec.yaml of your flutter project, add the following dependency:
For help getting started with Flutter, view the online documentation.
Layouts
This package contains various grid layouts. In the following section, you'll discover each one of them.
The explanation of the layout will always considered a top-to-bottom and left-to-right directions to simplify the description. However it is possible to change these directions in the code.
Staggered
This layout is intended for a small number of items.
I didn't find, for the moment, a performant algorithm which would work in a Sliver context, that's why this is not a GridView and therefore there are no SliverStaggeredGrid.
Grid properties
Evenly divided in n columns
Small number of items
Not scrollable
Tile properties
Must occupy 1 to n columns
Placement algorithm
Top-most and then left-most
Example
Below you'll find the code to create this grid layout:
This layout facilitates the browsing of uncropped peer content. Container heights are sized based on the widget size.
This is a complete separate grid and not a SliverGridDelegate for performance reasons. The SliverGrid is great but it needs to have a layout which does not depends on the size of its children. Otherwise we have to compute the size to all children before the end of the cache, which is really not performant for a masonry layout.
Grid properties
Evenly divided in n columns
Tile properties
Must occupy 1 column only
Placement algorithm
Top-most and then left-most
Example
Below you'll find the code to create this grid layout:
This layout is also called CSS Grid. This is a common grid layout on the web, where each item within a track has the maximum cross axis extent of its siblings.
Grid properties
Evenly divided in n columns
The rows can have differents heights
Tile properties
Must occupy 1 column only
Each tile has the same height as the tallest one of the row.
Placement algorithm
Top-most and then left-most
Example
Below you'll find the code to create this grid layout:
I'm working on my packages on my free-time, but I don't have as much time as I would. If this package or any other package I created is helping you, please consider to sponsor me so that I can take time to read the issues, fix bugs, merge pull requests and add features to these packages.
Sponsors
I want to thank Tommy for sponsoring this package. Thanks to him, I took the time to investigate in the previous performance issues and refactor this library to make it how is it today.
If you find a bug or want a feature, but don't know how to fix/implement it, please fill an issue.
If you fixed a bug or implemented a feature, please send a pull request.