Я новичок в флаттере, пытаюсь сделать CRUD и у меня проблема. На моем экране обновления я могу отправить все поля моей формы в Firebase Firestore, кроме радиополей. Эта проблема возникает только при обновлении, потому что при создании rad ios работают хорошо. Я не вижу, где я ошибаюсь в обновлении, не могли бы вы мне помочь?
Ниже приведен код моего класса
class _DetailFormState extends State<DetailForm> {
final DataRepository repository = DataRepository();
final _formKey = GlobalKey<FormBuilderState>();
String sex;
@override
void initState() {
sex = widget.user.sex;
super.initState();
}
Это мои переключатели:
ListTile(
title: Align(
child: new Text("Female"),
alignment: Alignment(-1.2, 0),
),
leading: Radio(
value: "female",
groupValue: widget.user.sex,
onChanged: (String value) {
setState(() {
widget.user.sex = value;
});
},
),
),
ListTile(
title: Align(
child: new Text("Male"),
alignment: Alignment(-1.2, 0),
),
leading: Radio(
value: "male",
groupValue: widget.user.sex,
onChanged: (String value) {
setState(() {
widget.user.sex = value;
});
},
),
),
Здесь я вызываю свой репозиторий Firebase для сохранения данных. Как я сказал ранее, я могу сохранить любое поле, кроме радио. Это моя проблема. Сообщение об ошибке не появляется. Данные просто не обновляются в Firebase
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
MaterialButton(
color: Colors.blue.shade600,
onPressed: () {
Navigator.of(context).pop();
},
child: Text(
"Cancel",
style: TextStyle(color: Colors.white, fontSize: 12.0),
)),
MaterialButton(
color: Colors.blue.shade600,
onPressed: () async {
Navigator.of(context).pop();
widget.user.sex = sex;
repository.updateUser(widget.user);
},
child: Text(
"Update",
style: TextStyle(color: Colors.white, fontSize: 12.0),
)),
],
),
Edit 1
updateUser(User user) async {
await collection
.document(user.reference.documentID)
.updateData(user.toJson());
}