firebase - Flutter 中的 FirebaseAuth logout() 不起作用
问题描述
我正在尝试从 FirebaseAuth 中注销,但即使在我注销后用户为空,该实例似乎仍以某种方式被缓存。当我注销并再次登录时,user.metadata.lastSignInTime
和FirebaseAuth.instance.hashCode
仍然与我注销之前相同。这导致,即使在第二次登录后,我的入职也会显示,因为我正在检查是否user.creationTime == user.lastSignInTime
.
我的 _logOut 方法:
void _logOut(BuildContext context) async {
await GoogleSignIn().signOut();
await FirebaseAuth.instance.signOut();
}
初始注册页面 whitch 在以下情况下被调用user == null
:
class SignUpPage extends StatefulWidget {
final String title;
SignUpPage({Key key, this.title}) : super(key: key);
@override
SignUpPageState createState() => SignUpPageState();
}
class SignUpPageState extends State<SignUpPage> {
final FirebaseAuth _auth = FirebaseAuth.instance;
bool isloaded = false;
@override
void initState() {
super.initState();
//detects when user logs out:
_auth.onAuthStateChanged.listen((user) => {
if (user == null)
{
//This page is the first one in the route
Navigator.of(context).popUntil((route) => route.isFirst),
setState(() {
isloaded = true;
}),
}
});
// Enabled persistent log-ins by checking the Firebase Auth instance for previously logged in users
_auth.currentUser().then((user) {
setState(() {
isloaded = true;
});
if (user != null) {
_pushPage(context, HomePage());
}
});
}
@override
Widget build(BuildContext context) {
//Building Page here
}
}
我刚开始使用 Flutter,但我尝试了所有我能想到的方法来在 _logOut() 中完全处理 FirebaseAuth.instance,但没有成功。
解决方案
推荐阅读
- qt - 在 PyQt5 中连接多对小部件
- php - 如何在 Wordpress 上的自定义 HTML 代码块中运行短代码
- python - 计算 pandas Dataframe 列和包含字符串值的列表之间的余弦相似度
- python - 如何在 Python Django 中创建多数据库
- node.js - Redis 不会从缓存中检索数据
- flutter - 如何在连接器中连接多个模型(ScopedModel)
- amazon-web-services - 如何在 AWS API Gateway 中将对象转换为 JSON?
- swift - 如何始终在 Vapor 3 和 Fluent 中返回一个数组(即使对于单个实体请求)
- python - Python 或 R 可以将本地数据帧与 SAS 中的 Proc SQL 等数据库表连接起来吗?
- azure - 电源外壳。获得免费的 Azure 服务计划,没有应用程序/插槽