reorderItems<T extends Sortable> static method
int
reorderItems<
T extends Sortable>( - List<T> items,
- int oldIndex,
- int newIndex
)
Implementation
static int reorderItems<T extends Sortable>(List<T> items, int oldIndex, int newIndex) {
double newSortOrder;
//TODO: This might be necessary only because of the Flutter reorderable list.
// if (newIndex > oldIndex) {
// newIndex -= 1;
// }
if (oldIndex < newIndex) {
// Moving down the list.
double nextSortOrder = newIndex + 1 < items.length
? items[newIndex + 1].sortOrder
: items[newIndex].sortOrder + 1;
newSortOrder = (items[newIndex].sortOrder + nextSortOrder) / 2;
} else {
// Moving up the list.
double previousSortOrder =
newIndex - 1 >= 0 ? items[newIndex - 1].sortOrder : items[newIndex].sortOrder - 1;
newSortOrder = (items[newIndex].sortOrder + previousSortOrder) / 2;
}
items[oldIndex].sortOrder = newSortOrder;
items.sort((a, b) => a.sortOrder.compareTo(b.sortOrder));
return newIndex;
}