我正在尝试在用户从应用程序注销后清除Firebase缓存。我已经尝试过了,但是代码似乎清除了我所有的文件,因为注销前我有背景图片,注销后所有这些图片都消失了。
private DataBuffer<Employee> processedSyslogDataBuffer = new DataBuffer<>(Employee.class, 1000);
processedSyslogDataBuffer.put(processedMessage);
if(processedSyslogDataBuffer.remainingCapacity() == 0) {
List<Employee> data = processedSyslogDataBuffer.getAll();
logger.info("Writing processed data with size :: "+data.size());
writerService.writeProcessed(data);
logger.info("resetting the buffer to accomodate next batch of records");
processedSyslogDataBuffer.reset();
}
这不是我想要的效果。我只想清除Firebase缓存并保留其余应用程序文件。我将如何实现这一目标?
这是注销代码段
void clearCache() async{
var appDir = (await getTemporaryDirectory()).path;
new Directory(appDir).delete(recursive: true); }
}
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'));
}
答案 0 :(得分:0)
但代码清除了我所有的文件
检查您提供的代码段,应用程序创建的文件已使用 Directory(appDir).delete(recursive: true);
删除。您在这里所做的是清除您存储的 SharedPreferences,不一定清除 Firebase 创建的缓存。
Signing out 应该清除用户实例。无需将用户详细信息存储在 SharedPreferences 中,当用户使用 FirebaseAuth.instance.currentUser
登录时,可以轻松获取用户详细信息。这将返回包含用户详细信息的 User class。
var user = FirebaseAuth.instance.currentUser;
String? name = user.displayName;
String? email = user.email;
String? id = user.uid;