如何在文本小部件中从firebase获取用户的电子邮件
我想在导航抽屉中的用户名下写入用户的电子邮件,但我无法访问文本小部件中的电子邮件 我使用此代码从Firebase获取用户电子邮件id,但无法写入内部文本如何在文本小部件中从firebase获取用户的电子邮件,firebase,flutter,dart,Firebase,Flutter,Dart,我想在导航抽屉中的用户名下写入用户的电子邮件,但我无法访问文本小部件中的电子邮件 我使用此代码从Firebase获取用户电子邮件id,但无法写入内部文本 class HomeScreen extends StatefulWidget { @override _HomeScreenState createState() => _HomeScreenState(); } class _HomeScreenState extends State<HomeScreen> {
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
firebase_auth.FirebaseAuth firebaseAuth = firebase_auth.FirebaseAuth.instance;
Future<void> signOut() async {
await firebaseAuth.signOut();
}
dynamic user;
String userEmail;
getCurrentUserInfo() async {
user = await firebaseAuth.currentUser;
userEmail = user.email;
print(userEmail);
return userEmail;
}
static var chartdisplay;
bool isSwitched = true;
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
title: Padding(
padding: EdgeInsets.symmetric(horizontal: 15),
child: Builder(
builder: (context) => IconButton(
icon: Image.asset(
"assets/images/menu.png",
),
onPressed: () => Scaffold.of(context).openDrawer(),
),
),
),
backgroundColor: const Color(0xffe8e5af),
elevation: 0,
centerTitle: false,
titleSpacing: 0,
),
drawer: new Drawer(
child: new ListView(
padding: EdgeInsets.zero,
children: <Widget>[
Container(
padding: EdgeInsets.symmetric(vertical: 50, horizontal: 30),
color: const Color(0xffe8e5af),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
CircleAvatar(
radius: 46,
backgroundColor: Colors.white,
child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'),
radius: 40,
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Nabia Salman',
style: TextStyle(
fontFamily: 'Montserrat',
fontSize: 13,
color: const Color(0xff000000),
fontWeight: FontWeight.w700,
),
textAlign: TextAlign.left,
),
Text(
//"${user.email}",
"nabia.salman99@gmail.com",
style: TextStyle(
fontFamily: 'Montserrat',
fontSize: 9,
color: const Color(0xff000000),
),
textAlign: TextAlign.left,
),
],
),
],
),
),
类主屏幕扩展StatefulWidget{
@凌驾
_HomeScreenState createState()=>\u HomeScreenState();
}
类_homescrenstate扩展状态{
firebase_auth.FirebaseAuth FirebaseAuth=firebase_auth.FirebaseAuth.instance;
Future signOut()异步{
等待firebaseAuth.signOut();
}
动态用户;
字符串userEmail;
getCurrentUserInfo()异步{
用户=等待firebaseAuth.currentUser;
userEmail=user.email;
打印(用户电子邮件);
返回用户电子邮件;
}
静态显示;
bool isSwitched=true;
@凌驾
小部件构建(构建上下文){
Size Size=MediaQuery.of(context).Size;
返回脚手架(
appBar:appBar(
自动嵌入:false,
标题:填充(
填充:边缘组。对称(水平:15),
孩子:建筑工人(
生成器:(上下文)=>IconButton(
图标:Image.asset(
“assets/images/menu.png”,
),
onPressed:()=>Scaffold.of(context.openDrawer(),
),
),
),
背景颜色:常量颜色(0xffe8e5af),
海拔:0,
标题:错误,
标题间距:0,
),
抽屉:新抽屉(
子:新列表视图(
填充:EdgeInsets.zero,
儿童:[
容器(
填充:边缘组。对称(垂直:50,水平:30),
颜色:常量颜色(0xffe8e5af),
孩子:排(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
圆形(
半径:46,
背景颜色:Colors.white,
孩子:圆环星(
背景图片:AssetImage('assets/images/avatar.jpg'),
半径:40,
),
),
纵队(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
“Nabia Salman”,
样式:TextStyle(
fontFamily:“蒙特塞拉特”,
尺寸:13,
颜色:常量颜色(0xff000000),
fontWeight:fontWeight.w700,
),
textAlign:textAlign.left,
),
正文(
//“${user.email}”,
“纳比亚。salman99@gmail.com",
样式:TextStyle(
fontFamily:“蒙特塞拉特”,
字体大小:9,
颜色:常量颜色(0xff000000),
),
textAlign:textAlign.left,
),
],
),
],
),
),
这就是我的屏幕的样子
请帮我找到解决办法,因为我是新手
提前感谢您如果您需要从异步调用获取数据,只需在小部件树中使用
FutureBuilder
,为其提供futureFuturegetCurrentUserInfo()
,设置默认数据,如“”,并在快照准备就绪时使用文本小部件显示它。有关FutureBuilder
的更多信息,请点击此处:我应该在FutureBuilder的builder中写些什么?我使用了FutureBuilder,但我还不知道如何使用它?如果您能帮我一点忙的话?谢谢,我得到了:)