#flutter
#флаттер
Вопрос:
У меня есть radiobutton в моем listview builder, listview builder building Cards, при вызове первого переключателя он меняется со всех последующих карт. Как я могу изолировать опцию переключателя только для выбранной карты?
Center(
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: data != null ? data.length : 0,
itemBuilder: (BuildContext context, index) {
Map data = snapshot.data[index];
//alts.length = 0;
if (data['alts'] != null) {
alts = json.decode(data['alts']);
alts.forEach((element) {});
} else
return snapshot.data[index]['alts'] =
Column(children: <Widget>[
Container(
padding:
EdgeInsets.fromLTRB(10, 20, 10, 0),
child: Card(
child: Container(
padding:
EdgeInsets.only(
left: 0,
right: 25,
bottom: 15),
child: Row(
// crossAxisAlignment:
//CrossAxisAlignment
// .start,
mainAxisSize:
MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment
.spaceEvenly,
children: [
Row(children: [
Radio(
value: null,
groupValue:
null,
onChanged:
null),
Text(
'Certo',
style:
TextStyle(
color: Colors
.black,
fontSize: 16,
),
)
]),
Комментарии:
1. Почему вы не предоставляете некоторую информацию о своих данных? Кроме того, почему всем свойствам виджета Radio присваивается нулевое значение? Пожалуйста, внимательно прочитайте документацию: api.flutter.dev/flutter/material/Radio-class.html
2. Значение Radio равно нулю, потому что я еще ничего не создал для setstate…
3. «… при вызове первого переключателя он изменяется со всех последующих карт» — это означает, что свойство «значение» для каждой кнопки-переключателя одинаково, в вашем случае все они равны нулю. Таким образом, виджет Radio будет сравнивать значение null(значение) == null(групповое значение), которое является истинным, отсюда и результирующее поведение.
Ответ №1:
Попробуйте это небольшое дополнение к вашему коду:
Row(children: [
Radio(
key: UniqueKey(), // add this line
value: null,
groupValue: null,
onChanged: null
),
Он предоставляет уникальный ключ для каждого переключателя.