我想使用离线 Firestore 持久性,但我没有得到正确的代码。在 kotlin 教程上是这样说的:
db.collection("members").document()
.addSnapshotListener(object : EventListener<DocumentSnapshot> {
override fun onEvent(snapshot: DocumentSnapshot?,
e: FirebaseFirestoreException?) {
if (e != null) {
Log.w(ContentValues.TAG, "Listen error", e)
err_msg.text = e.message
err_msg.visibility = View.VISIBLE;
return
}
snapshot?.reference?.set(data)
val intent = Intent()
setResult(Activity.RESULT_OK, intent)
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6c1804051f2c2a031e012d0f18051a051815420a0502051f04" rel="noreferrer noopener nofollow">[email protected]</a>()
}
}
)
我尝试在 flutter 上使用此代码:
Firestore.instance.collection("hega").document().setData(data);
也试试这个:
Firestore.instance.collection("hega").add(data);
两者在在线时都可以工作,但在设备离线时(使用飞行模式)都不起作用
更新: 所以上面的代码实际上是离线工作的。
Firestore.instance.collection("hega").document().setData(data);
我只需要为文档快照设置流监听器,即可查看数据是否已添加到本地缓存。但另一个问题是当设备上线时,离线数据没有同步到服务器。
最佳答案
您可以像flutterfire docs中提到的那样启用离线数据持久化。 .
对于网络
await FirebaseFirestore.instance.enablePersistence();
对于其他平台
FirebaseFirestore.instance.settings = Settings(persistenceEnabled: false);
关于dart - Flutter Firestore 离线持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52595348/