#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. Я не смог вас хорошо понять, не могли бы вы, пожалуйста, помочь мне, обновив код. Я только хочу получить выпадающее значение и изменить логическое значение в соответствии с ним.