Как лучше всего закрыть экземпляр Store в приложении Flutter?

Я создаю приложение Flutter с базой данных ObjectBox.

Приложение вызывает openStore();при запуске и сохраняет экземпляр Store в одноэлементном классе, чтобы я мог получить к нему доступ из любого места.

Но я не уверен, когда вызывать store.close ();

В iOS мы можем выполнить код прямо перед завершением работы приложения с помощью applicationWillTerminate (_:)

К сожалению, Flutter не предоставляет нам ничего подобного.

Я пробовал приведенный ниже код в самом долгом ожидаемом StatefulWidget, но иногда он удаляется раньше, и приложение теряет доступ к базе данных.

      @override
void dispose() {
  StoreHelper().store?.close();
  super.dispose();
}

Мои вопросы ...

  1. Как лучше всего вызвать store.close()?
  2. Что будет, если я не закрою магазин? Может ли мое приложение потерять постоянство данных?

1 ответ

Решение

Мне кажется, что ты делаешь нормально. Вы можете немного изменить его, чтобы который также очистит ссылку Store на , и в этом случае, если какая-то другая часть приложения все еще пытается получить доступ, вы можете справиться с этим (распознать, что оно закрыто, или снова открыть его).

Кроме того, в большинстве случаев вам следует уйти, не закрывая магазин явным образом. Если вы не выполняете (много) операций записи в фоновом режиме, и в этом случае вам, вероятно, следует попытаться хотя бы дождаться его завершения в .

Другие вопросы по тегам