【发布时间】:2018-12-01 00:48:51
【问题描述】:
我正在使用 1.0.1 版的 firebase_database 插件,flutter 目前正在 android 上进行测试。
我使用单例访问数据库。
GlobalFBInstance._internal() {
final firebaseInstance = FirebaseDatabase.instance;
firebaseInstance.goOnline();
firebaseInstance.setPersistenceEnabled(true);
firebaseInstance.setPersistenceCacheSizeBytes(10000000);
databaseRef = firebaseInstance.reference();
databaseRef.keepSynced(true);
storageRef = FirebaseStorage.instance.ref();
}
应用程序每次重启后都需要互联网来获取数据库。我认为有了持久性和保持同步就不需要互联网了吗?如果我有一个非常糟糕的连接(在模拟器和设备上测试),它需要永远加载一个包含来自数据库的四个简单字符串的 gridview。
当我加载数据快照时:
Future<DataSnapshot> getDatabaseSnap(String location) async {
var _newref = databaseRef.child(location);
await _newref.keepSynced(true);
return await _newref.once();
}
如果互联网连接慢,它将不会加载。
这可能是什么原因?有没有更好的方法来确保数据库不需要每次都连接?
提前致谢。
编辑:当等待持久性时,我得到错误:
bool ispersistant = await firebaseInstance.setPersistenceEnabled(true);
【问题讨论】:
-
那么你的问题是持久化需要很长时间还是根本没有加载?
-
当我关闭应用程序或应用程序被系统关闭(重启、内存管理......)时,没有持久性。每次应用关闭时都必须有互联网连接或根本没有内容
-
您共享的代码中还没有读取任何数据。请更新以包含minimal-yet-complete code that is needed to reproduce the problem。
-
我在打开快照的地方编辑了代码,但我认为没有必要。
标签: firebase-realtime-database dart persistence flutter offline-caching