nested_reorderable_list 0.0.1 copy "nested_reorderable_list: ^0.0.1" to clipboard
nested_reorderable_list: ^0.0.1 copied to clipboard

Nested Reorderable List

nested_reorderable_list #

A Flutter package that provides a widget to create a nested reorderable list.

Getting Started #

This package provides a stateless widget, NestedReorderableList, which allows you to create a list with drag-and-drop item reordering functionality. This widget supports nested lists, meaning that list items can have their own children, which can also be reordered.

Usage #

First, you'll need to add nested_reorderable_list to your pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter

  nested_reorderable_list: ^0.0.1

Then, import the package in your Dart file:

import 'package:nested_reorderable_list/nested_reorderable_list.dart';

Here's a basic example of how to use the NestedReorderableList widget:

NestedReorderableList<String>(
  dragAndDropItems: items,
  itemBuilder: (BuildContext context, DragAndDropItem<String> item) => Text(item.content),
  onReorder: (SourceLocation source, DestinationLocation destination, DragAndDropItem<String> movedItem) {
    setState(() {
      // Determine the source and destination lists based on whether the parentIndex is null
      final sourceList = (source.parentIndex == null)
        ? items
        : items[source.parentIndex!].children;
      final destList = (destination.parentIndex == null)
        ? items
        : items[destination.parentIndex!].children;
        
      // Perform the removal and insertion operation
      final moved = sourceList.removeAt(source.index);
      final destinationIndex = destination.index;
      destList.insert(destinationIndex, moved);
    });
  },
);

In the example above, items is a list of DragAndDropItem instances, each of which contains a key for identification, the content of the item, and a list of child DragAndDropItem instances (if any). The itemBuilder is a function that takes a BuildContext and a DragAndDropItem and returns a Widget that represents the item. The onReorder function is called when a drag-and-drop operation finishes; it receives a SourceLocation and a DestinationLocation, which represent the initial and final locations of the dragged item, respectively.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

11
likes
140
points
109
downloads

Publisher

verified publishergoodwelchi.com

Weekly Downloads

Nested Reorderable List

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on nested_reorderable_list