Orientação gerada a partir de informações públicas. Apenas para referência.
Snap é um pacote completo do Flutter que oferece capacidades flexíveis de fixação para widgets, permitindo comportamentos de fixação suaves e personalizáveis em diversos layouts. Ele oferece controle preciso sobre pontos de fixação, animações de amortecimento e ajustes dinâmicos, tornando-o ideal para criar interfaces responsivas e baseadas em gestos. O pacote se integra perfeitamente a widgets roláveis e oferece gerenciamento granular das posições e transições de fixação. Projetado para desenvolvedores que buscam interações avançadas com gestos, o Snap melhora a experiência do usuário em interfaces baseadas em grade ou semelhantes a cartões.
Casos de uso
Criando layouts de cartão arrastáveis
Implementando navegação por deslize para fixação
Construindo interfaces de grade responsivas
Designando controles deslizantes interativos
Habilitar rolagem suave com pontos de fixação
Principais recursos
Configuração flexível de ponto de snap
curvas de animação personalizáveis
Suporte para múltiplos alvos de snap
Ajuste dinâmico de snap
snap com detecção de gestos
Compatibilidade multiplataforma
Indicado para
Desenvolvedores de interfaces interativas
Designers implementando navegação baseada em gestos
Aplicativos que exigem alinhamento preciso de widgets
Projetos usando grades ou carrosséis roláveis
Equipes focadas em interações de usuário aprimoradas
Considerações
Pode exigir ajuste de desempenho para layouts complexos
Documentação limitada além dos exemplos básicos
Complexidade potencial no gerenciamento de múltiplos estados de snap
Mais adequado para projetos de médio a grande escala
Requer conhecimento sobre o sistema de gestos do Flutter
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
snap
An extensive snap tool/widget for Flutter that allows very flexible snap management and snapping between your widgets.
Inspired by WhatsApp's in-app Youtube player.
It is highly recommended to read the documentation and run the example project on a real device to fully understand and inspect the full range
of capabilities.
This is an extensive snap tool/widget for Flutter that allows very flexible snap management and snapping between your widgets.
Just wrap your snapper widget with the SnapController widget, fill the parameters, define your snappable widget and this package will take care
of everything else.
How-to-Use
"The view is what is being moved. It is the widget that snaps to the bound. The bound is what the view is being snapped to."
First, define two GlobalKeys- one for your view and one for your bound:
In this excerpt, the bound is an Align widget which expands through a Column widget.
The SnapController is confined between Offset.zero and Offset(1.0, 1.0). This means the view will not exceed the limits of the bound.
The flexibility is confined between Offset(0.75, 0.75) and Offset(0.75, 0.75). This means that the view can be moved beyond the horizontal/vertical
min/max constraints with a flexibility of 0.75 before it snaps.
The snapTargets determine from where and to where the view should snap once the movement is over. In this example:
The top left corner of the view can snap to the top left corner of the bound.
The top right corner of the view can snap to the top right corner of the bound.
The bottom left corner of the view can snap to the bottom left corner of the bound.
The bottom right corner of the view can snap to the bottom right corner of the bound.
The center of the view can snap to the center of the bound.
Keep in mind that these constant values are provided only for the ease of use. snapTargets can consist of any values you wish.
Use [SnapControllerState]'s [bool isMoved(double treshold)] method to determine if the view is moved or not where [treshold] is the distance at
which the view should be considered to be moved.
Notes
I started using and learning Flutter only some weeks ago so this package might have some parts that don't make sense, that should be completely
different, that could be much better, etc. Please let me know! Nicely!