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);
  });
}
Другие вопросы по тегам