当前位置: 移动技术网 > IT编程>移动开发>Android > Flutter 拖拽排序组件 ReorderableListView

Flutter 拖拽排序组件 ReorderableListView

2020年03月09日  | 移动技术网IT编程  | 我要评论

powerdesigner,中国业务员网,邯郸招商引假韩国现代

注意:无特殊说明,flutter版本及dart版本如下:

  • flutter版本: 1.12.13+hotfix.5
  • dart版本: 2.7.0

reorderablelistview是通过长按拖动某一项到另一个位置来重新排序的列表组件。

reorderablelistview需要设置childrenonreorder属性,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,
  ...
)

由于改为水平滚动,所以子控件的宽度要设置,否则会出现没有列表。

效果如下:

今天的文章对大家是否有帮助?如果有,请在文章底部留言和点赞,以表示对我的支持,你们的留言、点赞和转发关注是我持续更新的动力!

更多相关阅读:

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网