Flutter 拖拽排序组件 ReorderableListView
注意:无特殊说明,flutter版本及dart版本如下:
- flutter版本: 1.12.13+hotfix.5
- dart版本: 2.7.0
reorderablelistview是通过长按拖动某一项到另一个位置来重新排序的列表组件。
reorderablelistview需要设置children
和onreorder
属性,children
是子控件,onreorder
是拖动完成后的回调,用法如下:
list<string> items = list.generate(20, (int i) => '$i'); reorderablelistview( children: <widget>[ for (string item in items) container( key: valuekey(item), height: 100, margin: edgeinsets.symmetric(horizontal: 50, vertical: 10), decoration: boxdecoration( color: colors.primaries[int.parse(item) % colors.primaries.length], borderradius: borderradius.circular(10)), ) ], onreorder: (int oldindex, int newindex) { if (oldindex < newindex) { newindex -= 1; } var child = items.removeat(oldindex); items.insert(newindex, child); setstate(() {}); }, )
reorderablelistview的每个子控件必须设置唯一的key,reorderablelistview没有“懒加载”模式,需要一次构建所有的子组件,所以reorderablelistview并不适合加载大量数据的列表,它适用于有限集合且需要排序的情况,比如手机系统里面设置语言的功能,通过拖动对语言排序。
onreorder
是拖动完成的回调,第一个参数是旧的数据索引,第二个参数是拖动到位置的索引,回调里面需要对数据进行排序并通过setstate
刷新数据。
效果如下:
header
参数显示在列表的顶部,用法如下:
reorderablelistview( header: text( '一枚有态度的程序员', style: textstyle(color: colors.red,fontsize: 20), ) ... )
效果如下:
reverse`参数设置为true且reorderablelistview的滚动方向为垂直时,滚动条直接滑动到底部,如果是水平方向则滚动条直接滑动到右边,默认为false,用法如下:
reorderablelistview( reverse: true, ... )
scrolldirection`参数表示滚动到方向,默认为垂直,设置为水平方向如下:
reorderablelistview( scrolldirection: axis.horizontal, ... )
由于改为水平滚动,所以子控件的宽度要设置,否则会出现没有列表。
效果如下:
今天的文章对大家是否有帮助?如果有,请在文章底部留言和点赞,以表示对我的支持,你们的留言、点赞和转发关注是我持续更新的动力!
更多相关阅读:
上一篇: 高校宿舍管理系统
下一篇: Git远程协作和分支
推荐阅读
-
Flutter 拖拽排序组件 ReorderableListView
-
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
-
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
-
react.js组件实现拖拽复制和可排序的示例代码
-
Flutter 拖拽排序组件 ReorderableListView
-
React拖拽排序组件Dragact详解
-
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
-
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
-
使用h5实现react拖拽排序组件的方法(附代码)
-
React拖拽排序组件Dragact详解