我是新手,需要一小段代码的帮助。虽然我的代码有效,但是它首先显示错误/红色屏幕(毫秒)。当我以这种方式收到登录用户的电子邮件时:this._user?.email,
,它显示:
必须将非空字符串提供给“文本”窗口小部件。 断言失败:'data!= null'
当我以这种方式收到电子邮件时:_user.email,
显示:
获取器'email'在null上被调用。
收件人: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),
),
],
),
]
),
),
);
}
}
答案 0 :(得分:1)
您在等待检索用户时要显示什么?例如,如果您想显示一个空字符串(''
),则可以编写如下内容:
_user == null ? '' : _user.email
或更短:
_user?.email ?? ''
这样,如果_user
为空,则将显示一个空字符串。