【问题标题】:getter called on null in flutter gives error screen在flutter中调用null的getter会给出错误屏幕
【发布时间】:2020-02-10 10:13:22
【问题描述】:

登录后我有一个登录和更新个人资料屏幕。在这里,我在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 ?


【问题讨论】:

  • 这个print(_user);给你什么?

标签: user-interface flutter dart error-handling null


【解决方案1】:

你可以试试

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

【讨论】:

    【解决方案2】:

    从错误消息中可以清楚地看出,您在 null 上调用了“gender”。

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

    【讨论】:

    • 是的,我知道这就是我添加?? 条件的原因。但为什么这是这个问题仍然让我感到困惑。我是否以错误的方式通过提供者调用用户数据?
    • 没有看到完整的代码我们不能说为什么那个特定的变量是空的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2020-05-20
    • 1970-01-01
    • 2018-10-22
    • 2018-10-22
    • 2019-03-03
    • 2021-10-23
    相关资源
    最近更新 更多