Buscar pacotes, repositórios e categorias de apps

Capa de drag_select_grid_view
Detalhes do pacotev0.7.7

drag_select_grid_view

Grade que suporta tanto arrastar quanto tocar para selecionar seus itens.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
1,6 mil
Curtidas
171
Pontos Pub
160

Instalar pacote

flutter pub add drag_select_grid_view

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Um pacote Flutter que fornece um layout em grade, permitindo que os usuários selecionem itens por meio de gestos de toque e arrasto. Ele melhora a interação do usuário ao permitir seleção contínua em múltiplas células da grade, ideal para aplicativos que exigem operações em lote ou curadoria de conteúdo visual. O pacote é compatível com todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux, garantindo consistência entre plataformas. Desenvolvido com foco em desempenho e usabilidade, integra-se perfeitamente a projetos existentes no Flutter.

Casos de uso

  • Seleção em lote de itens em galerias de fotos
  • Interfaces de gerenciamento de tarefas interativas
  • Ferramentas de curadoria de conteúdo
  • Seleção múltipla em aplicativos de comércio eletrônico
  • Filtragem de dados orientada pelo usuário
  • Seleção por arrasto em aplicativos de produtividade

Principais recursos

  • Suporta seleção por toque e arrasto
  • Compatibilidade multiplataforma
  • Comportamento de seleção personalizável
  • Renderização eficiente para grandes conjuntos de dados
  • Manipulação de gestos embutida
  • Integração fácil com grades existentes

Indicado para

  • Desenvolvedores construindo interfaces do usuário baseadas em grade interativas
  • Aplicativos que exigem seleção de múltiplos itens
  • Projetos direcionados para múltiplas plataformas
  • Designers focados em interações intuitivas do usuário
  • Equipes que priorizam a resposta suave aos gestos

Considerações

  • Pode exigir gerenciamento adicional de estado para lógica de seleção complexa
  • Impacto no desempenho com grades muito grandes se não otimizadas
  • Opções de estilização embutidas limitadas além dos indicadores básicos de seleção
  • Não adequado para casos de uso apenas com seleção de item único

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

drag_select_grid_view

Pub package CI workflow Awesome

A grid that supports both dragging and tapping to select its items.

Selecting

Basic usage

DragSelectGridView constructor is very similar to GridView.builder, so you should take your time to understand the latter before diving into this library.

Once you are familiar with GridView.builder, probably the only additional piece of information you'll need is DragSelectGridViewController. With it, you're able to know which indexes are selected.

Check this example:

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final controller = DragSelectGridViewController();

  @override
  void initState() {
    super.initState();
    controller.addListener(scheduleRebuild);
  }

  @override
  void dispose() {
    controller.removeListener(scheduleRebuild);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: SelectionAppBar(
        selection: controller.value,
      ),
      body: DragSelectGridView(
        gridController: controller,
        itemCount: 20,
        itemBuilder: (context, index, selected) {
          return SelectableItem(
            index: index,
            selected: selected,
          );
        },
        gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
          maxCrossAxisExtent: 80,
        ),
      ),
    );
  }

  void scheduleRebuild() => setState(() {});
}

As you may have noticed in the code above, DragSelectGridView must be used along two other widgets in order to provide a proper user experience. In the example, they are:

  • SelectableItem: A selectable widget, which is going to visually indicate whether the item is selected or not.

  • SelectionAppBar: A custom AppBar, which shows the amount of selected items and an option to unselect them.

The example project provides some samples of those widgets. I won't add them to the library, since they are unrelated to the grid itself, but feel free to copy them into your project, as long as you respect the license terms.

Advanced usage

You can use the setter DragSelectGridViewController.value to directly change the selection (I'm not quite sure why you'd need this, but I don't ask questions).

It allows this sort of interaction:

Directly changing selection

You can check the code here.

There are some other minor settings you can do to make DragSelectGridView fit your needs, like DragSelectGridView.autoScrollHotspotHeight. Those features are well documented, so I'll let you take your discovery time.

Hopefully, this is everything you need to know to use this library.

Running the example

cd example
flutter create .
flutter run

Thanks ❤️

Once upon a time I asked at Flutter Study Group how to implement a specific feature that I intended to add to this library. Simon Lightfoot offered to help me and effortlessly implemented what eventually became part of this library (check this gist). A big thanks to him.

I took a lot of inspiration from Aidan Follestad's Android implementation, drag-select-recyclerview. Also a big thanks to him.

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote