drag_grid

Creator: coderz1093

Last updated:

0 purchases

drag_grid Image
drag_grid Images

Languages

Categories

Add to Cart

Description:

drag grid

DragGrid #
这是一个支持拖动 Item 的 GridView,支持在拖动中进行动画过渡,同时还提供 gridController 支持手动更新排序。






实现原理 #
如果你对 DragGrid 如何实现的原理感兴趣,可以看这篇 图文详解 - 如何开发 Draggable GridView 组件 文章

如何安装 #


在 pubspec.yaml 添加
dependencies:
drag_grid: ^1.0.5
copied to clipboard


在命令行运行如下
flutter pub get
copied to clipboard



简单使用 #
class DragGridUsage extends StatelessWidget {
const DragGridUsage({super.key});

@override
Widget build(BuildContext context) {
return DragGrid<String>(
itemList: List.generate(16, (i) => '$i'),
padding: const EdgeInsets.symmetric(vertical: 20.0, horizontal: 24.0),
sliverGridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
mainAxisSpacing: 10,
crossAxisSpacing: 10,
childAspectRatio: 1,
),
itemBuilder: (context, item, index) {
return Container(
width: 64.0,
height: 64.0,
alignment: Alignment.center,
color: const Color(0xfff0f0f0),
child: Text(
item,
style: const TextStyle(
color: Color(0xff404244),
fontWeight: FontWeight.bold,
fontSize: 16.0,
height: 1,
),
),
);
},
);
}
}
copied to clipboard

API 文档 #
DragGrid #



API
说明
必选
默认值




onDragStarted
来自于 LongPressDraggable onDragStarted




onDragUpdate
来自于 LongPressDraggable onDragUpdate




onDragEnd
来自于 LongPressDraggable onDragEnd




sortChanger
Grid Item 拖拽过程中,itemList 排序发生变化时触发




itemListChanger
Grid Item 拖拽结束后触发,同步更新 itemList。手动更新排序也会触发




isItemListChanged
外部 Widget 变化时, DragGrid 是否重新渲染(Using in didUpdateWidget)




gridController
DragGrid Controller (手动更新 itemList, 支持动画过渡)




scrollController
GridView scrollController




sliverGridDelegate
GridView SliverGridDelegate




ScrollPhysics
GridView physics

const NeverScrollableScrollPhysics()


itemBuilder
GridView item builder




padding
GridView padding

EdgeInsets.zero


duration
指定 动画时长

const Duration(milliseconds: 500)


crossCount
指定 GridView 横轴数量(默认: 从 sliverGridDelegate 获取)




direction
GridView 方向,默认 Axis.vertical

Axis.vertical


itemList
DragGrid item 数据源 (拷贝),用来计算实时排序




shrinkWrap
GridView shrinkWrap

true


animation
是否启用 DragGrid 过渡动画

true


enable
是否启用 DragGrid,当值为 false 时,单纯渲染为 GridView

true



GridController #



API
说明
参数




update
用来从 DragGrid 获取最新的 itemList Api
List<T> itemList


append
手动追加新 Grid Item, 会重新渲染 DragGrid,并触发 itemListChanger
{required T item, bool animation = true}


remove
手动移除某个 Grid Item, 会重新渲染 DragGrid,并触发 itemListChanger
{required int index, bool animation = true}


insert
手动插入某个 Grid Item, 会重新渲染 DragGrid,并触发 itemListChanger
{int index = 0, required T item, bool animation = true}


reset
手动重置 itemList, 会重新渲染 DragGrid,并触发 itemListChanger
{required List<T> itemList, bool animation = true}




其他说明 #
如果您发现任何错误,请提交一个 issues。如果你愿意自己修复或增强东西,非常欢迎你提 PR。

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.