我有一个登录名和登录后的更新配置文件屏幕。在这里,我使用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 ?
答案 0 :(得分:0)
从错误消息中可以很明显地看出,您正在调用null上的“ gender
”。
在访问_user
的属性之前,先检查其是否为空。
答案 1 :(得分:0)
您可以尝试
_gender = _user?.gender?.toUpperCase() ?? _gender;