繁体   English   中英

在颤振中调用 null 的 getter 给出错误屏幕

[英]getter called on null in flutter gives error screen

登录后,我有一个登录名和一个更新配置文件屏幕。 在这里,我在genesis方法中设置用户配置文件。 我面临着奇怪的问题。 大多数情况下,我会看到以下屏幕,其中确实有用户的信息。 特定列是gender ,在 null 上调用它是错误。

在此处输入图片说明


//store user data
      _user = new UserModel(
        id: data['collection']['userData']['id'].toString(),
        name: data['collection']['userData']['name'],
        email: data['collection']['userData']['email'],
        phone: data['collection']['userData']['phone_number'].toString(),
        avatar: data['collection']['userData']['avatar'],
        age: data['collection']['userData']['age'].toString(),
        gender: data['collection']['userData']['gender'].toUpperCase().toString() ?? 'MALE',
        totalscore: 100,
        // totalscore: data['collection']['userData']['total_sessions_count'],
        totaldays: data['collection']['userData']['total_session_by_days_count'],
      );

以上是在本地存储数据的genesis方法中的代码。

在用户profile update screen代码如下:


Widget build(BuildContext context) {
     final userProvider =  Provider.of<Genesis>(context, listen: false);
     _user = userProvider.user;
     print('------------------------------------');
     print(_user);
     print('------------------------------------');
    if(_firsTime){
      setState(() {
        _gender = _user.gender.toUpperCase() ?? _gender;
        _nameController.text = _user.name;
        _emailController.text = _user.email;
        _ageController.text = _user.age;
        _phoneController.text = _user.phone;
        _avatar = _user.avatar ?? 'https://placehold.it/200x200';
        _firsTime = false;
      });
    }
}

what is the issue here ?


从错误消息中,很明显您在 null 上调用了“ gender ”。

在访问它的属性之前检查您的_user是否为空。

你可以试试看

_gender = _user?.gender?.toUpperCase() ?? _gender;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM