我正在使用Firebase作为后端创建一个应用程序。最初,代码运行正常,但是从Firebase更新后,我遇到了问题。问题是:未为类型'User'定义'then'方法。在下面的代码摘录中,我添加了**以指示问题所在。欢迎任何帮助。
@override
initState() {
FirebaseAuth.instance
.currentUser
.**then**((currentUser) => {
if (currentUser == null)
{Navigator.pushReplacementNamed(context, "/login")}
else
{
FirebaseFirestore.instance
.collection("voters")
.doc(currentUser.uid)
.get()
.then((DocumentSnapshot result) =>
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => HomePage(
))))
.catchError((err) => print(err))
}
})
.catchError((err) => print(err));
super.initState();
}
答案 0 :(得分:2)
获取当前用户不再是未来。您可能会在pubspec.yaml
中增加软件包的版本,而无需修改代码以反映重大更改。
检索用户现在是同步完成的。 像使用同步代码一样检索用户,并将其传递到需要的地方。
@override
initState() {
User currentUser= FirebaseAuth.instance.currentUser;
if (currentUser == null)
{Navigator.pushReplacementNamed(context, "/login")}
else
{
FirebaseFirestore.instance
.collection("voters")
.doc(currentUser.uid)
.get()
.then((DocumentSnapshot result) =>
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => HomePage(
))))
.catchError((err) => print(err))
}
super.initState();
}
如果仍然需要捕获错误,请将相关代码包装在try-catch
中。