在这个同步函数上,第二条语句在第一条语句之前运行
Posted
技术标签:
【中文标题】在这个同步函数上,第二条语句在第一条语句之前运行【英文标题】:On this synchronous function second statement is running before 1st statement 【发布时间】:2021-10-06 16:33:55 【问题描述】:String ok ="/login";
String _loggedInFunction()
FirebaseAuth.instance
.authStateChanges()
.listen((User? user)
if (user == null)
ok = "/login";
else ok = "/home";
print(ok);
print(user);
);
print("Reading 1st");
return ok;
我无法理解 FirebaseAuth.instance.... 是否是一个异步函数。因为第二个语句在第一个语句之前运行,但是我如何在这里应用“await”关键字,而在 FirebaseAuth.instance 之前应用“await”关键字......它表明它不是未来事件。
我也可以解释一下为什么我不能直接返回 if 语句中的“ok”变量,它显示了一个错误。
如果用户重新启动应用程序,我使用此代码跳过登录。你有什么推荐的代码吗?
以上代码的输出
I/flutter ( 6405): Reading 1st
I/flutter ( 6405): /home
【问题讨论】:
This answer 可能有助于理解 onAuthStateChanged 的作用 非常感谢,它节省了我的时间@Dharmaraj 【参考方案1】:FirebaseAuth.instance.authStateChanges().listen
不是一个承诺,而是一个倾听者。这意味着您不能等待它或使用then
等待它。每次身份验证状态更改时都会触发。你只是在听那些变化。
【讨论】:
以上是关于在这个同步函数上,第二条语句在第一条语句之前运行的主要内容,如果未能解决你的问题,请参考以下文章
顺序执行多条sql,一条执行失败则所有都执行失败;例如第一条成功,第二条失败的话,第一条也失败!急!