Buscar pacotes, repositórios e categorias de apps

Capa de reorderable_grid_view
Detalhes do pacotev2.2.8

reorderable_grid_view

Visualização de Grade Reordenável

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
54,3 mil
Curtidas
164
Pontos Pub
120

Instalar pacote

flutter pub add reorderable_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 permite a reordenação por arrastar e soltar de itens em um layout de grade. Ele expande a funcionalidade do GridView permitindo que os usuários rearrumem tiles intuitivamente por gestos. Ideal para painéis personalizáveis, quadros de tarefas ou qualquer interface que exija posicionamento dinâmico de itens. O pacote suporta todas as principais plataformas, incluindo mobile, web e desktop, garantindo comportamento consistente entre dispositivos. Desenvolvido com foco em desempenho e facilidade de integração, funciona perfeitamente em aplicativos Flutter existentes.

Casos de uso

  • Layouts de painel personalizáveis
  • Interfaces de gerenciamento de tarefas
  • Reorganização da galeria de fotos
  • Ordenação de itens baseada na preferência do usuário
  • Configurações baseadas em grade interativas

Principais recursos

  • Reordenamento por arrastar e soltar
  • Compatibilidade multiplataforma
  • Integração simples com GridView existentes
  • Suporta alças de arrasto personalizadas
  • Animação embutida para transições suaves

Indicado para

  • Desenvolvedores construindo interfaces de grade interativas
  • Aplicativos que precisam de organização de conteúdo guiada pelo usuário
  • Projetos com requisitos de layout dinâmico

Considerações

  • Requer um manuseio cuidadoso da gestão de estado
  • Pode afetar o desempenho com conjuntos de dados muito grandes
  • Personalização limitada para feedback de arrasto
  • Não otimizado para atualizações de frequência extremamente alta

README original

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

ReorderableGridView

Idea from official ReorderableListView

Usage:

dependencies:
  reorderable_grid_view: ^2.2.9-alpha.4

Example

Sceenshot
class _MyHomePageState extends State<MyHomePage> {
  final data = [1, 2, 3, 4, 5];

  @override
  Widget build(BuildContext context) {
    Widget buildItem(String text) {
      return Card(
        key: ValueKey(text),
        child: Text(text),
      );
    }

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),

      body: Center(
        // use ReorderableGridView.count() when version >= 2.0.0
        // else use ReorderableGridView()
        child: ReorderableGridView.count(
          crossAxisSpacing: 10,
          mainAxisSpacing: 10,
          crossAxisCount: 3,
          children: this.data.map((e) => buildItem("$e")).toList(),
          onReorder: (oldIndex, newIndex) {
            setState(() {
              final element = data.removeAt(oldIndex);
              data.insert(newIndex, element);
            });
          },
          footer: [
            Card(
              child: Center(
                child: Icon(Icons.add),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Options

option desc
dragWidgetBuilderV2 the drag widget builder
restrictDragScope restrict drag scope to ReorderableGridView, not drag over the scree, default is false
dragStartDelay the longPress time
scrollDirection the scroll direction, default is Axis.vertical, supports Axis.horizontal
scrollSpeedController control how speed when scroll down when drag out of viewport
OnDropIndexChange the drop position changed, void (index, oldIndex), oldIndex = nil if is drag start.

dragWidgetBuilderV2

Normaly you can do like this:

dragWidgetBuilderV2: DragWidgetBuilderV2(
	isScreenshotDragWidget: false,
	builder: (index, child, screenshot) {
		return child;
	}
)
  • child is you dragging widget.

And if you dragging widget has some state, the callback's child can't access the state. So you can do a screenshot like this.

dragWidgetBuilderV2: DragWidgetBuilderV2(
	isScreenshotDragWidget: true,
	builder: (index, child, screenshot) {
		return Image(screenshot);
	}
)

Constructors

  • ReorderableGridView.builder
  • ReorderableGridView.count
  • ReorderableSliverGridView.count

custom reorderable

You can use ReorderableWrapperWidget to custom your reorderable. Use ReorderableWrapperWidget as root. and it's descendants is ReorderableItemView[] list

  • ReorderableWrapperWidget(child: SomeCollection(children: ReorderableItemView))

Important

  • the placeholderBuilder is not right when the list is very long, is not fixable for now. please see issue 47
  • can drag out of scope in ReorderableSliverGridView, please see issue 52

TODO

fix placeholderBuilder is not right when the list is very long

Other link project

If this project is not fit your meet, you can try those other projects

Categorias

Repositório-fonte

Projetos que usam este pacote