STBox
STBox

Reputation: 645

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

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.

Upvotes: 3

Views: 428

Answers (3)

Sikshya Maharjan
Sikshya Maharjan

Reputation: 296

Try using FutureBuilder

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

Upvotes: 1

Peter Haddad
Peter Haddad

Reputation: 80914

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()),
              ),

Upvotes: 3

Mohamed Abdou
Mohamed Abdou

Reputation: 451

Just simply use user.email.toString()

Upvotes: 0

Related Questions