没有为“用户”类型flutter firestore定义方法“then”[重复]

Posted

技术标签:

【中文标题】没有为“用户”类型flutter firestore定义方法“then”[重复]【英文标题】:The method 'then' isn't defined for the type 'User' flutter firestore [duplicate] 【发布时间】: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');
          
        
      );
    );
  

【问题讨论】:

【参考方案1】:

您不需要 .then 语句。使用新版本的 firebase 获取 User 是 synchronous,因此您只需从 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');
          
        
      );
    );
  

【讨论】:

以上是关于没有为“用户”类型flutter firestore定义方法“then”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 和 Firestore 在请求中没有用户信息

Flutter 通过查询 Firestore 创建自定义用户模型给出“类型‘Future<dynamic>’不是‘String’类型的子类型”错误

期望一个“用户”类型的值,但在尝试将 Firestore 数据获取到 Flutter Web 上的 PaginatedDataTable 时得到一个“Null”类型的值?

有没有办法通过flutter查看来自云Firestore的用户的关注者或关注者?

Flutter Firestore:从 Firestore 中检索数据并在 Flutter 中显示为小部件

如何在flutter的firestore中使用uid更新用户数据