【Flutter】在Flutter中实现长按拖拽排序?不要太轻松,Reorderables 开源项目介绍和源码分析(作者的思路挺鬼才的,我怎么想不到
在Flutter中,可以使用Reorderables
这个开源项目来实现长按拖拽排序的功能。这个项目提供了一系列的Widgets,可以用来创建可拖拽和可排序的列表。
首先,你需要在你的pubspec.yaml
文件中添加依赖:
dependencies:
flutter:
sdk: flutter
reorderables: ^0.4.0
然后,你可以使用ReorderableListView
来创建一个可拖拽排序的列表。以下是一个简单的例子:
import 'package:flutter/material.dart';
import 'package:reorderables/reorderables.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final _items = <String>[
'Item 1',
'Item 2',
'Item 3',
// ...
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Draggable List'),
),
body: ReorderableListView(
children: _items.map((item) => ListTile(
key: ValueKey(item),
title: Text(item),
)).toList(),
onReorder: (int oldIndex, int newIndex) {
setState(() {
if (newIndex > oldIndex) {
newIndex -= 1;
}
final item = _items.removeAt(oldIndex);
_items.insert(newIndex, item);
});
},
),
);
}
}
在这个例子中,我们创建了一个可拖拽排序的列表,通过ReorderableListView
实现。每次用户改变列表项的顺序时,onReorder
回调就会被调用,并且你可以在这个回调中更新你的数据模型来反映新的顺序。
评论已关闭