【问题标题】:The getter 'email' was called on null-Flutter/Firebase在 null-Flutter/Firebase 上调用了 getter 'email'
【发布时间】:2020-09-26 08:18:38
【问题描述】:

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

必须为 Text 小部件提供非空字符串。 断言失败:'data != null'

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

getter '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),
                  ),
                ],
              ),
            ]
        ),
      ),
    );
  }
}

【问题讨论】:

    标签: flutter dart google-cloud-firestore firebase-authentication


    【解决方案1】:

    在等待检索用户时,您想显示什么?例如,如果你想显示一个空字符串 (''),你可以这样写:

    _user == null ? '' : _user.email
    

    甚至更短:

    _user?.email ?? ''
    

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

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 2021-02-05
      • 1970-01-01
      • 2021-08-11
      • 2020-01-08
      • 2021-12-10
      • 2020-03-24
      • 2021-05-25
      • 2023-03-08
      相关资源
      最近更新 更多