Flutter & Hive - Как сохранить переупорядоченный список в Hive
Я новичок в Flutter и в настоящее время реализую локальное сохранение элементов с помощью Hive и Boxes. Все было хорошо, пока я не решил переупорядочить список предметов.
У меня вопрос: как сохранить переупорядоченные изменения, зная, что я не могу использовать традиционные "InsertAt(index)" и "RemoveAt(index)" с Hive.
Box<Item> itemsBox;
List<Item> items; //Item class extends HiveObject
void addItem(Item item) {
setState(() {
items.add(item);
itemsBox.add(item);
});
}
void removeItem(Item item) {
setState(() {
items.remove(item);
item.delete();
});
}
void _onReorder(int oldIndex, int newIndex) {
setState(() {
Item row = items.removeAt(oldIndex);
items.insert(newIndex, row);
int lowestInt = (oldIndex < newIndex) ? oldIndex : newIndex;
int highestInt = (oldIndex > newIndex) ? oldIndex : newIndex;
// What Can I Do with my box to save my List<Item> items
// Box is a Box<Item>
});
}
1 ответ
Я тоже искал ответ, это оказалось довольно легко.
void _onReorder(int oldIndex, int newIndex) {
if (oldIndex < newIndex) {
newIndex -= 1;
}
setState(() {
// this is required, before you modified your box;
final oldItem = itemsBox.getAt(oldIndex);
final newItem = itemsBox.getAt(newIndex);
// here you just swap this box item, oldIndex <> newIndex
itemsBox.putAt(oldIndex, newItem);
itemsBox.putAt(newIndex, oldItem);
});
}