【发布时间】:2020-04-13 08:35:20
【问题描述】:
在我的 Flutter/Dart 移动应用中,我利用 Firebase RTDB 持久性来启用应用的离线使用。
我的理解是,要启用持久性,您必须按照以下代码进行调用,然后再使用任何数据库引用,例如。查询数据库。我使用以下代码在加载应用程序后立即启用持久性,它工作正常:
FirebaseDatabase firebaseDatabase = FirebaseDatabase.instance;
bool _success = await firebaseDatabase.setPersistenceEnabled(true);
print(_success); // Prints true, so persistence is set 'on'.
当我退出应用程序时,我尝试关闭持久性:
bool _success = await firebaseDatabase.setPersistenceEnabled(false);
print(_success); // Prints false, so persistence is still 'on', ie. the call failed.
我认为无法关闭持久性的原因是因为在尝试关闭它之前已经调用了数据库引用。
我猜这会导致三个问题:
- 我是否应该担心在注销时将其关闭?我尝试它的原因主要是良好的内务管理。运行注销时,我会清理共享首选项、关闭 keepsyncd 等。此外,虽然用户可以有多个用户 ID 来登录,但我想确保我没有保留他们之前登录 ID 中的持久数据。
- 与1相关,是否设置持久化为false清除缓存 数据库的数据和潜在的排队调用?
- 如果对 1 和 2 的回答是“是”,我该如何关闭持久性,因为我用来执行此操作的代码一直告诉我它失败了?
【问题讨论】:
标签: firebase flutter firebase-realtime-database dart persistence