Flutter 吸气剂';电子邮件';在空颤振/火基上调用

Flutter 吸气剂';电子邮件';在空颤振/火基上调用,flutter,dart,google-cloud-firestore,firebase-authentication,Flutter,Dart,Google Cloud Firestore,Firebase Authentication,我是一个新手,需要一小段代码的帮助。虽然我的代码可以工作,但它首先显示错误/红色屏幕(毫秒)。当我以这种方式收到登录用户的电子邮件时:this.\u user?.email,它显示: 必须向文本小部件提供非空字符串。 断言失败:“数据!”空' 当我以这种方式收到电子邮件时:\u user.email,会显示: 获取程序“电子邮件”的调用为null 收件人:空 尝试呼叫:电子邮件 请建议如何抛出并捕获此异常或修复此问题。我们将非常感谢您的任何帮助,并欢迎您的意见。我的完整代码如下: class M

我是一个新手,需要一小段代码的帮助。虽然我的代码可以工作,但它首先显示错误/红色屏幕(毫秒)。当我以这种方式收到登录用户的电子邮件时:
this.\u user?.email,
它显示:

必须向文本小部件提供非空字符串。 断言失败:“数据!”空'

当我以这种方式收到电子邮件时:
\u user.email,
会显示:

获取程序“电子邮件”的调用为null

收件人:空

尝试呼叫:电子邮件

请建议如何抛出并捕获此异常或修复此问题。我们将非常感谢您的任何帮助,并欢迎您的意见。我的完整代码如下:

class MyAccountSetting extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AccountSetting(),
    );
  }
}

class AccountSetting extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new AccountSettings();
  }
}

class AccountSettings extends State<AccountSetting> {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  FirebaseUser _user;

  @override
  void initState() {
    super.initState();
    initUser();
  }
  initUser() async {
    _user = await _auth.currentUser();
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SingleChildScrollView(
        child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Container(
                margin: const EdgeInsets.only(top: 10.0),
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.start,
                children: <Widget>[
                  IconButton(
                    icon: Icon(Icons.mail),
                    iconSize: 30,
                    onPressed: () {},
                  ),
                  Text(
                    _user.email,
//                    this._user?.email,
                    style: TextStyle(fontSize: 18),
                  ),
                ],
              ),
            ]
        ),
      ),
    );
  }
}
类MyAccountSetting扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:AccountSetting(),
);
}
}
类AccountSetting扩展了StatefulWidget{
@凌驾
状态createState(){
返回新的AccountSettings();
}
}
类AccountSettings扩展状态{
final FirebaseAuth _auth=FirebaseAuth.instance;
FirebaseUser\u用户;
@凌驾
void initState(){
super.initState();
initUser();
}
initUser()异步{
_user=wait_auth.currentUser();
setState((){});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:SingleChildScrollView(
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
容器(
边距:仅限常量边集(顶部:10.0),
),
划船(
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
图标按钮(
图标:图标(Icons.mail),
iconSize:30,
按下:(){},
),
正文(
_user.email,
//此.\u用户?.email,
样式:TextStyle(字体大小:18),
),
],
),
]
),
),
);
}
}

在等待检索用户时,您希望显示什么?例如,如果要显示空字符串(
'
),可以编写如下内容:

\u user==null?“”:_user.email
甚至更短:

\u用户?.email???”
这样,如果
\u用户
为空,您将显示一个空字符串