Flutter Firebase 数据库持久性不起作用

Flutter Firebase Database persistence not working

我正在使用 1.0.1 版的 firebase_database 插件,目前正在 android 上测试 flutter。

我用单例访问数据库。

 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);

不要使用 FirebaseInstance 切换持久存储。使用 FirebaseDatabase 对象保存实例,然后将其设置为启用。

FirebaseDatabase database;
database = FirebaseDatabase.instance;
database.setPersistenceEnabled(true);
database.setPersistenceCacheSizeBytes(10000000); // 10MB cache is enough

Class 持久化 Firebase 数据库

class RealtimeDataBase{
   late FirebaseDatabase firebaseDataBase;
   late DatabaseReference databaseRef;

  RealtimeDataBase(){
    firebaseDataBase = FirebaseDatabase.instance;
    firebaseDataBase.setPersistenceEnabled(true);
    firebaseDataBase.setPersistenceCacheSizeBytes('specify any value');
    databaseRef = firebaseDataBase.ref();
  }
}