搜索插件、代码仓与 APP 分类

插件详情v0.0.6

selectable_draggable_listbox

带多选、列表间拖放和内置重新排序功能的列表框。

AndroidiOSmacOSWindowsLinux
近 30 天下载
19
喜欢数
26
Pub 分数
150

安装插件

flutter pub add selectable_draggable_listbox

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,提供带有内置多选支持、列表内拖放重新排序以及多个列表间拖放功能的列表框。它通过手势实现直观的数据操作,增强了用户交互体验。适用于需要动态列表管理的应用程序,例如任务组织器、播放列表构建器或配置面板。该包跨平台,支持 Android、iOS、macOS、Windows 和 Linux。

适合场景

  • 任务优先级
  • 播放列表管理
  • 配置面板排序
  • 表单中的数据重组
  • 多列表项转移

主要特点

  • 多选支持
  • 列表内拖放重新排序
  • 跨列表拖放
  • 内置选择状态管理
  • 响应式手势处理

适合对象

  • 开发交互式列表界面的开发者
  • 需要灵活数据重组的应用程序
  • 偏好拖放工作流的用户
  • 跨平台列表管理工具
  • 以UI为主的生产力应用

使用建议

  • 需要仔细处理选择状态
  • 复杂布局可能需要自定义样式
  • 大型列表带来的性能影响
  • 仅限基于列表的数据结构
  • 依赖于拖拽目标的正确组件树结构

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Pub License: MIT

selectable_draggable_listbox

Listbox with multiselect, drag & drop between lists, and reorder built in.

Features

  • Bind your data to a listview of custom widget
    • Simple text item widget -or-
    • Templated list item widget for more cusomizability
  • Multi-select items
    • Shift-click to select items in sequence
    • Ctrl/Cmd-click to select individual items
    • Single-select only option available
  • Reorderable
    • Click & drag the "three lines" icon to reorder item
  • Drag & Drop
    • Drag items from/to different lists
    • Each list may independently be a draggable, drop target, or both

Feature Demo

Getting started

  1. Add the latest version of this package:
  • Run flutter pub add selectable_draggable_listbox -or-
  • Edit pubspec.yaml and then run flutter pub get:
dependencies:
  selectable_draggable_listbox: ^latest_version
  1. Import the package
import 'package:selectable_draggable_listbox/selectable_draggable_listbox.dart';

Usage

// Create your list and transform it to track selected items (list can be complex objects instead):
final myList = ['Apples','Cheese','Bread','Milk'].forListbox().toList();

// Create the listbox widget
return Listbox(
  items: myList,
  itemTemplate: (context, eventManager, index, item, onSelect) {
    // Define the template used for each listitem
    return SimpleListboxItem(
      key: Key('$index'), // Key is required for reordering
      item: item,
      label: item.data,
      eventManager: eventManager,
      onSelect: onSelect,
    );
  },
  onSelect: (itemsSelected) {
    // React to items selected
    // Note: (value of isSelected is not set automatically by Listbox,
    //  due to not knowing how your state is handled)
    setState(() {
      for (var item in myList) {
        item.isSelected = itemsSelected.contains(item);
      }
    });
  },
  onReorder: (oldIndex, newIndex) {
    // React to item reordered
    setState(() {
      // Note: this is an extension provided by the package
      myList.move(oldIndex, newIndex);
    });
  },
);

Advanced Usage

For more info on additional features like Drag & Drop and Customizable Templates, see examples and API:

Support

You can support me by buying me a coffee Buy me a coffee

And also don't forget to star this package on GitHub

所属分类

依赖

依赖清单 1 项

源码仓库

使用此插件的项目

暂无相关数据。