firebase - Flutter:从应用程序注销后如何清除 Firebase 缓存?
问题描述
用户从应用程序注销后,我正在尝试清除 Firebase 缓存。我已经尝试过了,但是代码似乎清除了我的所有文件,因为我在注销之前有背景图像,而所有这些图像在注销后都消失了。
void clearCache() async{
var appDir = (await getTemporaryDirectory()).path;
new Directory(appDir).delete(recursive: true); }
这不是我想要的效果。我只想清除 Firebase 缓存并保留其余的应用程序文件。我将如何实现这一目标?
这是注销代码片段
new FlatButton(
child: new Text("Yes",style: new TextStyle(fontFamily: 'DroidSansChinese', color: Colors.white),),
onPressed: () {_signOut(); clearPreferences();clearCache();},
),
void _signOut() async {
await _auth.signOut();
Navigator.of(context)
.pushAndRemoveUntil(MaterialPageRoute(builder: (context) => LoginPage()), (Route<dynamic> route) => false);
}
void clearPreferences() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('name', '');
await prefs.setString('surname', '');
await prefs.setString('email', '');
await prefs.setString('id', '');
print(prefs.getString('name'));
}
void clearCache() async{
var appDir = (await getTemporaryDirectory()).path;
new Directory(appDir).delete(recursive: true);
}
解决方案
但代码清除了我所有的文件
检查您提供的片段,应用程序创建的文件被删除Directory(appDir).delete(recursive: true);
。您在这里所拥有的是清除您存储的 SharedPreferences,而不一定清除 Firebase 创建的缓存。
从 FirebaseAuth注销应该清除用户实例。无需将用户详细信息存储在 SharedPreferences 中,而是可以在用户使用FirebaseAuth.instance.currentUser
. 这将返回包含用户详细信息的User 类。
var user = FirebaseAuth.instance.currentUser;
String? name = user.displayName;
String? email = user.email;
String? id = user.uid;
推荐阅读
- javascript - 画布上的视差星星。这对网站来说太多了吗?
- node.js - 如何创建一个公会然后给自己一个邀请链接
- rdf - 创建类时如何更改标签
- ansible - 如何以非 root 用户身份使用 'package:' 模块?
- version-control - 您将如何使用它们共有的文件夹/文件更新两个略有不同的存储库?
- android - 如何在 Firebase 存储中上传视频?
- python - 在 Django 中的 S3 上分离开发/登台/生产媒体存储桶
- bash - 从文本文件创建用户组时出错
- python - 更改默认运行的 Python 版本
- javascript - JavaScript 检查本地网络上的 HTTP 服务器