#flutter #formbuilder
Вопрос:
Я использую flutter_form_builder и хочу создать динамическую форму, например, ответить » Да » или » Нет » на виджете, а затем открыть другой виджет прямо под ним.
Например: «Ел ли пациент что-нибудь?» Да/Нет. Если да, покажите виджет с флажками «Что они ели?». Рис, пицца и т. Д.
Проблема в том, что FormBuilder выдает предупреждения, когда я меняю радио диуреза: I/flutter (21285): Предупреждение! Замена дублирующего поля для действий-это нормально игнорировать, если поле было намеренно заменено I/flutter (21285): Внимание! Замена дублирующего поля для устранения-это нормально игнорировать, если поле было намеренно заменено I/flutter (21285): Предупреждение! Игнорирование отмены регистрации поля для исключения-это нормально игнорировать, если поле было намеренно заменено
Основная проблема: Итак, что происходит в пользовательском интерфейсе. Допустим, я выбираю «Sim» для карты «исключение», а затем меняю свой выбор на карте «диурез», затем появляется ошибка выше, экран перестраивается, и карта исключения отображается невыбранной.
Мой код приведен ниже. (HMClickableCard-это просто виджет, который имеет карточку и реализует внутри нее FormBuilderRadioGroup)
Container(
child: HMClickableCard(
options: ["Sim", "Não"],
label: "Diurese",
name: "diuresis",
icon: Icons.bathroom,
iconSize: 30,
onChanged: (option) {
_fbKey.currentState?.save();
setState(() {
switch (option) {
case "Sim":
_diuresis = true;
break;
case "Não":
_diuresis = false;
break;
}
});
}),
),
Container(
child: FormBuilderCheckboxGroup(
name: "diuresisAspect",
options: [
FormBuilderFieldOption(value: "Clara"),
FormBuilderFieldOption(value: "Amarelo Ouro"),
FormBuilderFieldOption(value: "Avermelhada"),
FormBuilderFieldOption(value: "Odor forte"),
FormBuilderFieldOption(value: "Queixa de dor ao urinar"),
],
decoration: InputDecoration(
labelText: "Aspecto da diurese",
labelStyle:
TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),
)),
Container(
child: HMClickableCard(
options: ["Sim", "Não"],
label: "Eliminação Intestinal",
name: "elimination",
icon: Icons.ac_unit,
iconSize: 30,
onChanged: (_option) {
_fbKey.currentState?.save();
setState(() {
switch (_option) {
case "Sim":
_intestinalElimination = true;
break;
case "Não":
_intestinalElimination = false;
break;
}
});
},
)),
Container(
child: FormBuilderCheckboxGroup(
name: "eliminationAspect",
options: [
FormBuilderFieldOption(value: "Bolinhas"),
FormBuilderFieldOption(
value: "Moldadas (forma de salsicha)"),
FormBuilderFieldOption(value: "Pastosa"),
FormBuilderFieldOption(value: "Líquida")
],
decoration: InputDecoration(
labelText: "Aspecto da eliminação intestinal:",
labelStyle:
TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),
)),
Кто-нибудь знает, как это решить?
Я погуглил и смог найти только то, что связано с разными ключами (я использую только глобальный ключ для всей формы) или одно и то же имя для полей форм (что, как вы можете видеть, не так).