How to get currently logged in user email in side-nav-bar in flutter?

Viewed 307

I want to get the email of currently logged in user in accountEmail field. But it is displaying Instance of 'Future' in place of email. Below is the function to get the id of currently logged in user:

Future <String> getUserId()  async{
  FirebaseUser user = await FirebaseAuth.instance.currentUser();
  return user.uid;
}

And in this way I am getting it:

new UserAccountsDrawerHeader(
                accountName: new Text("Admin"),
                accountEmail: new Text(getUserId().toString()),
              ),

I am new to flutter and any help would be highly appreciated.

3 Answers

Inside the initState, do the following:

FirebaseUser user = null;
@override
void initState() {
    super.initState();
    user = await FirebaseAuth.instance.currentUser();
}

Then you can do:

new UserAccountsDrawerHeader(
                accountName: new Text("Admin"),
                accountEmail: new Text(user.email.toString()),
              ),

Try using FutureBuilder

 UserAccountsDrawerHeader(
      accountName: new Text("Admin"),
      accountEmail: FutureBuilder(
        future: getUserId(),
        builder: (context,snapshot){
          if(snapshot.hasData){
            snapshot.data;
          }else{
            "-"
          }
        },
      ),
    ),

Just simply use user.email.toString()

Related