Flutter: как создать класс Hive DAO в flutter / dart?

#flutter #dart #hive

#трепетать #дротик #улей #flutter #dart

Вопрос:

Мне нужно сгруппировать все операции получения, размещения, удаления и обновления Hivebd crud в одном классе, но когда я пытаюсь это сделать, появляется ошибка, потому что Hive.openBox() нуждается в await, но конструкторам не разрешена асинхронность.Как бы я сделал это правильно?

Мой класс ниже.

 class HomeListRepository {
  var _homelistStore = await Hive.openBox<HomeList>("homelists");

  Future insert(String id, HomeList homelist) async {
    await _homelistStore.put(id,homelist.toMap());
  }

  Future update(HomeList homelist) async {
    await _homelistStore.put(homelist.id,homelist.toMap());
  }

  Future delete(HomeList homelist) async {
    await _homelistStore.delete(homelist.id);
  }

  Future<List<HomeList>> getAll() async {
    return _homelistStore.values;
  }

}
  

Редактировать:
Я решил это, и окончательный код таков:

 class HomeListRepository {
  Box _homelistStore;
  
  Future<void> insert(String id,HomeList homelist) async {
    _homelistStore = await Hive.openBox<HomeList>("homelists");
    _homelistStore.put(id,homelist);
  }

  Future<void> update(HomeList homelist) async {
    _homelistStore = await Hive.openBox<HomeList>("homelists");
    await _homelistStore.put(homelist.id,homelist);
  }

  Future<void> delete(HomeList homelist) async {
    _homelistStore = await Hive.openBox<HomeList>("homelists");
    await _homelistStore.delete(homelist.id);
  }

  Future<List<HomeList>> readAll() async {
    _homelistStore = await Hive.openBox<HomeList>("homelists");
    return _homelistStore.values.toList();
  }
}
  

найдено на странице Hive github:GitHub