В моем мобильном приложении Flutter / Dart я использую постоянство Firebase RTDB для автономного использования приложения.
Насколько я понимаю, чтобы обеспечить постоянство, вы должны выполнить вызов, как показано в следующем фрагменте кода, прежде чем использовать какие-либо ссылки на базу данных, например,. запросить базу данных. Я использую следующий фрагмент кода, чтобы включить постоянство сразу после загрузки приложения, и оно отлично работает:
FirebaseDatabase firebaseDatabase = FirebaseDatabase.instance;
bool _success = await firebaseDatabase.setPersistenceEnabled(true);
print(_success); // Prints true, so persistence is set 'on'.
При выходе из приложения я пытаюсь отключить сохранение с помощью:
bool _success = await firebaseDatabase.setPersistenceEnabled(false);
print(_success); // Prints false, so persistence is still 'on', ie. the call failed.
Я предполагаю, что причина, по которой постоянство не может быть отключено, состоит в том, что до того, как пытаться отключить его, были обращения к ссылкам на БД.
Это приводит к трем вопросам, я думаю:
- Должен ли я беспокоиться о том, чтобы вообще отключить его при выходе из системы? Причина, по которой я пытаюсь это сделать, это в основном хорошее ведение домашнего хозяйства. Я очищаю общие настройки, закрываю keepyncd и т. Д. c при выходе из системы. Кроме того, однако, пользователь может иметь несколько идентификаторов пользователя для входа в систему, и я хочу убедиться, что я не сохраняю постоянные данные из их предыдущего идентификатора входа.
- Относится к 1, устанавливает ли постоянство для false очистить кэш данные и потенциальные вызовы в очереди в БД?
- Если ответы на вопросы 1 и 2 - «да», как я могу отключить сохранение, если код, который я использую для этого, продолжает сообщать мне, что это не удалось?