An open API service indexing awesome lists of open source software.

https://github.com/fluttercandies/flutter_draggable_container

A Draggable Widget Container
https://github.com/fluttercandies/flutter_draggable_container

Last synced: 8 months ago
JSON representation

A Draggable Widget Container

Awesome Lists containing this project

README

          

# 可以拖动子部件的容器部件
# A Draggable Widget Container

## 可拖动子部件,可删除子部件,可以固定子部件位置
## Each children is draggable, deletable, fixable.

## 截图 / Screenshots

[](https://github.com/gzlock/images/raw/master/flutter_draggable_container/1.gif)

### 模式 / Mode

- 正常模式 / Normal Mode:
- 不拦截子部件的手势事件
- Do not intercept the GestureDetector events of the child widget
- 不能拖动和删除子部件
- Can't drag and delete the children widget

- 编辑模式 / Edit mode:
- 长按子部件进入编辑模式
- Long press the children widget to enter the edit mode
- 进入编辑模式后,不再需要长按来拖动子部件,直接拖动就可以了
- In the edit mode, you can just drag the tile directly.
- 在可删除子部件上显示删除按钮
- Show the delete button on the deletable child widget
- 拦截所有子部件的手势事件
- Intercept the child widget gesture event.
- 可以拖动和删除子部件
- the children widget can drag and delete.

- DraggableContainer的构造函数参数 / The DraggableContainer Constructor parameters
- required List\ items
- required Widget? NullableItemBuilder\(BuildContext context, T? item) itemBuilder
- 子项widget的构建器。
- Item widget builder.
- required SliverGirdDelegate gridDelegate
- 布局依赖于gridDelegate。
- The layout depends on the gridDelegate.
- bool? shrinkWrap
- 紧缩水平宽度大小,方便水平居中,默认为false。
- Shrink the horizontal size, default is false.
- Widget? NullableItemBuilder\(BuildContext context, T? item) deleteButtonBuilder
- 子项删除按钮的构建器。
- The delete button builder for the item.
- Widget? NullableItemBuilder\(BuildContext context, T? item) slotBuilder
- 槽位组件的构建器。
- The slot widget builder.
- BoxDecoration? draggingDecoration, default is a shadow style.
- 当拖动子项时,包裹在子项外部的样式,默认为阴影效果。
- When dragging the item widget, the style wrapped the item widget.
- Duration? animationDuration, default 200ms.
- 子项widget位移的动画时间。
- The animation time of the child widget displacement.
- bool? tapOutSideExitEditMode, default true.
- 当点击了DraggableContainer外部后,退出编辑模式。
- When tap outside of the draggable container, exit the edit mode.
- onChanged(List\ items)
- 当子项目改变时触发(拖动过后,删除后)
- Trigger when the items changed(dragged, deleted)
- onEditModeChanged(bool mode)
- mode为true则进入了编辑模式,为false则退出了编辑模式.
- When mode is true then in the draggable mode. If false it mean exited the draggable mode.
- Future\ beforeRemove(T? item, int slotIndex)
- 删除item的确认事件,返回true删除,返回false不删除
- The event for confirm to delete a item, if return true then delete, if false then no action.
- Future\ beforeDrop({T? fromItem, int fromSlotIndex, T? toItem, int toSlotIndex})
- 将一个item从A点移到B点后的确认事件,返回true为允许放下,返回false不允许放下,

会覆盖toItem.fixed属性。
- The confirmation event after moving an item from point A to point B. Returns true to allow dropping, returns false to not allow dropping.

will override the toItem.fixed property.

- DraggableContainerState的方法 / The DraggableContainerState methods:
- getter / setter bool editMode
- 读取或设置编辑模式。
- get or set the edit mode.

- List\ items
- 项目列表。
- Item list.

- Future\ addSlot(\? item)
- 添加一个新的槽。
- Add a new slot.
- Future\ removeSlot(int index)
- 删除一个槽位,返回item。
- Remove the slot of index and return the item.

- removeItem(\ item)
- removeItemAt(int index)
- 删除item。
- Delete item.

- replaceItem(int index, \? item)
- 替换item。
- Replace item.