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();
}
}
我正在使用 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();
}
}