Средство получения «type» было вызвано с нулевым значением. ошибка в flutter

#flutter #dropdown

#flutter #выпадающий список

Вопрос:

У меня есть функция, подобная этой,

   changingTheSubjectOptions() {
    if (registerType.type == "Teacher") {
      subjectsOptionShow = true;
    } else {
      subjectsOptionShow = false;
    }
    return subjectsOptionShow;
  }
  

Здесь значение registerType.type меняется, когда пользователь выбирает выпадающий параметр здесь,

   RegisterType registerType;
  List<RegisterType> registrationList = <RegisterType>[
    RegisterType(type: "Student"),
    RegisterType(type: "Teacher"),
  ];

DropdownButton<RegisterType>(
                    value: registerType,
                    icon: Icon(Icons.arrow_downward),
                    iconSize: 24,
                    elevation: 16,
                    hint: Container(
                      // width: 200,
                      child: Text("You are ",
                          style: TextStyle(
                              color: Colors.grey,
                              fontWeight: FontWeight.w600,
                              fontSize: 15)),
                    ),
                    underline: Container(
                      color: Colors.white,
                    ),
                    style: TextStyle(color: Colors.black),
                    onChanged: (RegisterType newValue) {
                      setState(() {
                        registerType = newValue;
                      });
                    },
                    items: registrationList
                        .map<DropdownMenuItem<RegisterType>>(
                            (RegisterType value) {
                      return DropdownMenuItem<RegisterType>(
                        value: value,
                        child: Text(value.type),
                      );
                    }).toList(),
                  ),
  

Теперь, когда я вызываю функцию следующим образом,

 Visibility(
                visible: changingTheSubjectOptions(),
                
  

это выдает ошибку,
Средство получения «type» было вызвано с нулевым значением.
До сих пор я понимаю, что registerType.type равно null.
Но и после того, как я инициализирую registerType.type в initState, он выдает ту же ошибку.

   void initState() {
    registerType.type = "Student";
    super.initState();
  }
  

Как я могу его инициализировать?

Комментарии:

1. Можете ли вы опубликовать код RegisterType?

Ответ №1:

registerType равно null, не registerType.type . Возможно, инициализируйте его чем-то или используйте его с проверками null.

Вероятно, это избавит от вашей ошибки:

     if (registerType?.type == "Teacher") {
  

Комментарии:

1. Я не смог вас хорошо понять, не могли бы вы, пожалуйста, помочь мне, обновив код. Я только хочу получить выпадающее значение и изменить логическое значение в соответствии с ним.