未为类型“用户”定义方法“然后”

时间:2020-08-26 13:25:16

标签: firebase flutter dart google-cloud-firestore

我正在使用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();
  }

1 个答案:

答案 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中。