从firebase重置颤动缓存



我有一个从firebase获取数据的代码。问题是,一旦我得到数据,我就会缓存它,而不是在下次我想获取数据时检查是否缓存了它,这样我就可以减少加载时间。

问题是,当我更改数据库中的某些内容时,当我刷新应用程序时,我仍然会看到旧数据,因为我认为它是从缓存中获取的。

我如何才能在重置应用程序时清除缓存并获取新数据?

这里有一段代码,用于检查数据是否被缓存。

List lists = [];
print(id);
await firestoreInstance
.collection("menu/" + id + "/" + id)
.get(GetOptions(source: Source.cache))
.then((querySnapshot) {
querySnapshot.docs.forEach((result) async {
lists.add(result.data()['name']
);
});
});
if (lists.isEmpty) {
print('aici');
await firestoreInstance
.collection("menu/" + id + "/" + id)
.get()
.then((querySnapshot) {
querySnapshot.docs.forEach((result) async {
lists.add(result.data()['name']);
});
});
return lists;
} else {
return lists;
}
}

要清除缓存,可以调用clearPersistence方法,该方法同时清除缓存的读取和挂起的写入。


不过,我通常建议不要尝试自己进行缓存管理,而是让Firestore来处理它。这也意味着我不会使用GetOptions,而只使用常规的get,或者(更好的(实时快照侦听器,它可以让Firestore最好地管理缓存。

您只检查列表是否为空,您必须检查新添加的数据是否在列表中可用,如果不可用,它将再次从firebase中获取数据,如果可用,则它将显示以前存储的数据列表中的数据。