getter'email'在null-Flutter / Firebase上被调用

问题描述 投票:0回答:1

我不熟悉,需要一小段代码的帮助。虽然我的代码有效,但是它首先显示错误/红色屏幕(毫秒)。当我以这种方式收到登录用户的电子邮件时:this._user?.email,显示:

必须将非空字符串提供给文本窗口小部件。 断言失败:'data!= null'

并且当我以这种方式收到电子邮件时:_user.email,显示:

getter'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),
                  ),
                ],
              ),
            ]
        ),
      ),
    );
  }
}
flutter dart google-cloud-firestore firebase-authentication
1个回答
1
投票

[等待用户检索时您想显示什么?例如,如果您想显示一个空字符串(''),则可以编写如下内容:

_user == null ? '' : _user.email

或更短:

_user?.email ?? ''

这样,如果_user为空,则将显示一个空字符串。

© www.soinside.com 2019 - 2024. All rights reserved.