reorder method
void
reorder(
{ - int start = 0,
- int end = -1,
- dynamic reverse = false,
})
Implementation
void reorder({int start: 0, int end: -1, reverse: false}) {
var slots = _relationship.keys.toList().getRange(start, end + 1).toList();
// print('revers: $reverse, total: ${slots.length}, from $start to $end');
if (reverse) {
slots = slots.reversed.toList();
}
// print('after, from $start to $end');
for (var i = 0; i < slots.length; i++) {
final slot = slots[i];
final tile = _relationship[slot];
// print('i $i $tile');
if (tile == null) {
int next = -1;
for (var j = i + 1; j < slots.length; j++) {
// print('j $j');
final nextItem = _relationship[slots[j]]?.item;
if (j == (slots.length - 1) || nextItem?.fixed == false) {
next = j;
break;
}
}
// print('next $next');
if (next == -1) {
break;
} else {
final nextSlot = _fromSlot = slots[next];
final nextTile = _relationship[nextSlot];
_relationship[slot] = nextTile;
nextTile?.key.currentState?.rect = slot.key.currentState!.rect;
_relationship[nextSlot] = null;
}
}
}
}