
注意:無特殊說明,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,
...
)
由于改為水平滾動,所以子控制元件的寬度要設定,否則會出現沒有串列,
效果如下:

今天的文章對大家是否有幫助?如果有,請在文章底部留言和點贊,以表示對我的支持,你們的留言、點贊和轉發關注是我持續更新的動力!

更多相關閱讀:
- Flutter系列文章總覽
- 全網最詳細的一篇Flutter 尺寸限制類容器總結
- Flutter DataTable 看這一篇就夠了
- Flutter Widgets 之 PageView
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/28358.html
標籤:Android
上一篇:微信公眾號清除記憶體快取
