'How to Disable ReorderableListView Reorder capability but still allow scrolling?
How do we deactivate the ReorderableListView dragging/reordering capabilities in Flutter?
I would like to disable the dragging function but still allow scrolling.
Any ideas? Thank you
Solution 1:[1]
You could wrap your list item in an IgnorePointer widget and control with a bool, like this
class ReorderableList extends StatefulWidget {
@override
_ReorderableListState createState() => _ReorderableListState();
}
class _ReorderableListState extends State<ReorderableList> {
bool _allowReorder = true;
final List<int> _items = List<int>.generate(50, (int index) => index);
void reorderData(int oldindex, int newindex) {
setState(() {
if (oldindex < newindex) {
newindex -= 1;
}
final int item = _items.removeAt(oldindex);
_items.insert(newindex, item);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(onPressed: () {
setState(() {
_allowReorder = !_allowReorder;
});
}),
body: SafeArea(
child: Column(
children: [
Expanded(
child: ReorderableListView(
onReorder: (one, two) => reorderData(one, two),
children: <Widget>[
for (int index = 0; index < _items.length; index++)
if (_allowReorder)
ListTile(
key: Key('$index'),
title: Text('Item ${_items[index]}'),
)
else
IgnorePointer(
key: Key('$index'),
child: ListTile(
title: Text('Item ${_items[index]}'),
),
)
],
),
),
],
),
),
);
}
}
Solution 2:[2]
One way to disable reordering is by setting parameter buildDefaultDragHandles
of ReorderableListView.builder()
to false
.
For example, if you'd like to enable reordering only if there are at least two items in the list, you could do something like:
ReorderableListView.builder(
itemCount: someList.length,
itemBuilder: _buildListWidget,
buildDefaultDragHandles: someList.length > 1, // disable drag&drop if there's only one item
onReorder: onReorderList,
);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Chris |
Solution 2 | SePröbläm |