Я пытаюсь создать списки переключателей с функцией. Это много разных списков, использующих разные типы перечислений.
Вот что я имею до сих пор. Проблема в том, что groupValue
теряет указатель. Таким образом, при нажатии радиокнопки указатель, переданный в функцию, не отражает изменений.
List<Widget> _buildRadioButtonList(List<dynamic> values, groupValue) {
List<Widget> radioButtons = [];
for (var value in values) {
radioButtons.add(
RadioListTile<dynamic>(
title: Text(GF.enumToString(value)),
value: value,
groupValue: groupValue,
onChanged: (value) {
setRadio(value, groupValue);
setState(() {
groupValue = value;
});
},
selected: groupValue == value,
),
);
}
return radioButtons;
}
Так используется функция
enum IsFinished { Positive, Negative, Unknown }
IsFinished _isFinishedGroupValue = isFinished.unknown;
Widget build(BuildContext context) {
return Column(
children: _buildRadioButtonList(IsFinished.values, _isFinishedGroupValue)
}
ПРИМЕЧАНИЕ GF.enumToString(value)
просто получаетстрока из перечисления для использования в качестве метки
static String enumToString(value) {
return value.toString().split('.').last;
}
Внутри setState
groupValue
изменяется при нажатии, но исходная ссылка, переданная в _isFinishedGroupValue
, остается неизменной. Как мне заставить это работать так, как я собираюсь, без необходимости писать новую функцию сборки для каждого перечисления?