getter, вызванный в null во флаттере, выдает сообщение об ошибке - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть логин и экран обновления профиля после входа в систему. здесь я устанавливаю профиль пользователя в методе genesis. Я сталкиваюсь с утомленной проблемой. Большую часть времени я получаю экран ниже, где у меня есть информация для пользователя. указанный столбец c равен gender, где он был вызван при нулевом значении: ошибка.

enter image description here


//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 ?


Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Вы можете попробовать

_gender = _user?.gender?.toUpperCase() ?? _gender;
0 голосов
/ 10 февраля 2020

Из сообщения об ошибке довольно ясно, что вы вызываете 'gender' в null.

проверьте, является ли ваш _user нулевым или нет, прежде чем получить доступ к его свойствам.

...