【问题标题】:The method 'then' isn't defined for the type 'User' flutter firestore [duplicate]没有为“用户”类型flutter firestore定义方法“then”[重复]
【发布时间】:2021-02-09 18:23:04
【问题描述】:

我正在开发一些用户具有管理员角色而其他用户具有用户角色的应用程序。下面的类检查分配给用户的角色并将他们引导到适当的屏幕。问题是我不断收到这个错误方法'then'没有为类型'User'定义。我浏览了这个平台上发布的一些文档,我增加了我的版本pubspec.yaml 中的软件包以确保所有内容都已更新,但问题仍然存在。欢迎任何帮助

 class UserManagement {
  Widget handleAuth() {
    return StreamBuilder(
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (BuildContext context, snapshot) {
        if (snapshot.hasData) {
          print(snapshot.data.uid);
          return AdminDashboard();
        }
        return LoginScreen();
      },
    );
  }

  final auth = FirebaseAuth.instance.currentUser;

  authorizeAdmin(BuildContext context) {
    auth.then((user) {
      FirebaseFirestore.instance
          .collection('users')
          .where('uid', isEqualTo: user.uid)
          .get()
          .then((docs) {
        if (docs.docs[0].exists) {
          if (docs.docs[0].data()['role'] == 'admin') {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => AdminDashboard()),
            );
          } else {
            print('Access Denied');
          }
        }
      });
    });
  }
}

【问题讨论】:

    标签: flutter dart firebase-authentication


    【解决方案1】:

    您不需要 .then 语句。使用新版本的 firebase 获取 Usersynchronous,因此您只需从 FirebaseAuth.instance.currentUser; 获取用户并在您的方法中使用它。例如,在您的方法中,它看起来像:

    final user = FirebaseAuth.instance.currentUser;
      authorizeAdmin(BuildContext context) {
          FirebaseFirestore.instance
              .collection('users')
              .where('uid', isEqualTo: user.uid)
              .get()
              .then((docs) {
            if (docs.docs[0].exists) {
              if (docs.docs[0].data()['role'] == 'admin') {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => AdminDashboard()),
                );
              } else {
                print('Access Denied');
              }
            }
          });
        });
      }
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2021-08-21
      • 2020-10-01
      • 1970-01-01
      • 2021-05-18
      • 2021-08-02
      • 2021-10-04
      • 2022-06-10
      • 2020-10-23
      相关资源
      最近更新 更多