dart - Flutter Firestore 离线持久化

标签 dart flutter google-cloud-firestore

我想使用离线 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/

相关文章:

javascript - 如何在firestore中创建新的用户文档

dart - 在按下按钮时创建新的小部件

添加第三方生成器时,Flutter build_runner 构建失败

flutter - Stack 中的手势被阻止

flutter - 连续显示ListView项目

ios - 用户遇到与 Firestore Pod 内部 grpc::ClientAsyncReaderWriter<grpc::ByteBuffer, grpc::ByteBuffer>::Finish 相关的崩溃

firebase - 如何使用 Firebase Firestore 规则模拟器测试列表查询

flutter - 在 Flutter 中解码 BLE 设备负载

flutter - 带编舞(11277) : Frame time is 13. 988632 ms future !检查图形 HAL 是否使用正确的时基生成 vsync 时间戳

android - 在flutter应用程序中构建apk的问题