简体   繁体   中英

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.

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{
            "-"
          }
        },
      ),
    ),

只需简单地使用user.email.toString()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM