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