Flutter - 我想把登录用户的姓名和电子邮件放在抽屉里

Flutter - I want to put the name and email of the user logged in the drawer

我是 flutter 的新手,我设法制作了登录屏幕,现在我想在抽屉中显示姓名和电子邮件,有人可以帮我吗?按照我的验证码和 firestore

这是我用于 firestore 的代码:

Future<void> userSetup(String displayName, DateTime valitycnh, String url) async {
  CollectionReference users = FirebaseFirestore.instance.collection('Users_Client');
  FirebaseAuth auth = FirebaseAuth.instance;
  String uid = auth.currentUser!.uid.toString();
  users.add(
    {
      'uid': uid,
      'displayname': displayName,      
      'valitycnh': valitycnh,
      'url': url
    },
  );
  return;
}

这是我的代码认证:

class AuthenticationHelper {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  get user => _auth.currentUser;

  //SIGN UP METHOD
  Future signUp(
      {required String email,
      required String password,
      required String username,
      required DateTime valitycnh,
      required String url}) async {
    try {
      await _auth.createUserWithEmailAndPassword(
        email: email,
        password: password,
      );
      User? updateUser = FirebaseAuth.instance.currentUser;
      updateUser!.updateDisplayName(username);
      userSetup(username, valitycnh, url);

      return null;
    } on FirebaseAuthException catch (e) {
      return e.message;
    }
  }


and i want a name and email here:

Drawer: Drawer(
        child: ListView(
          children: [
            UserAccountsDrawerHeader(
              decoration: BoxDecoration(
                color: AppColors.secundary,
              ),
              accountEmail: Text('email'),
              accountName: Text('name'),
            )
          ],
        ),
      ),

您可以使用 FirebaseUser 中可用的吸气剂。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

String name = user.getDisplayName();
String email = user.getEmail();

您可以使用 FirebaseAuth 实例获取用户信息:

Future<Map<String,dynamic>> _getUserDetails(){
       FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    
       if(user != null){
       return {
        'name' : user.getDisplayName(),
         'email' : user.getEmail();
         }
        }
      
    
     return {
      'name' : 'No name',
     'email' : 'No email'
    }

}