Согласно моему ответу в Slack Firebase Community:
setPersistenceEnabled (true) в вашей базе данных должно быть самым первым, что вы делаете перед использованием любых ссылок для вызова данных. Ваш метод fetchData () запускается до того, как вы его вызовите, поэтому настройка персистентности не удастся. Вы можете проверить успешность установки персистентности следующим образом:
bool _success = await globals.firebaseDatabase.setPersistenceEnabled(true);
Вы также должны запустить это после настройки персистентности:
_success =
await globals.firebaseDatabase.setPersistenceCacheSizeBytes(10000000);
Создание экземпляра вашей базы данных и настройка персистентности требует сделать это как можно раньше в приложении ... так что в идеале, вернитесь в main.dart. (отредактировано)
При горячей перезагрузке bool успеха будет показывать false, но это потому, что постоянство может быть успешно установлено только один раз, и это было сделано при первоначальной загрузке приложения. (отредактировано)
Надеюсь, что это решит вашу проблему.
keepSynced (true / false) может затем использоваться для указанных c битов БД, чтобы гарантировать, что указанная c ссылка всегда актуально. Вы можете включать и выключать это, когда будете sh. keepSynced в основном просто добавляет слушателя. Если вы уже создаете прослушиватели для этих областей базы данных, вам не нужен keepSynced. (отредактировано)
пс. 'globals' в приведенном выше коде - это просто ссылка на мой файл global_config.dart.