Я хочу создать два виджета.Оба отображают сетку из 2 столбцов с кнопками, которые можно выбрать / отменить выбор.У одного должна быть ради логика (одиночный выбор), где у другого должна быть логика флажка (множественный выбор).
Это моя реализация для Android, которую я пытаюсь воссоздать во Flutter:
Я попытался использовать GridView с RadioListTiles, подумав, что я мог бы заменить значок RadioButton своим собственным виджетом, сохранив логику.Я не вижу никакого способа сделать это.Я также понял, что GridView во Flutter не выполняет автоматическую обертку для своих дочерних элементов, в результате чего каждая радиоплитка занимает только первые 10% всей ячейки.
Вот где я сейчас:
class RadioSelect extends StatefulWidget {
final QuestionData question;
RadioSelect({this.question});
@override
RadioSelectState createState() => RadioSelectState(question);
}
class RadioSelectState extends State<RadioSelect> {
RadioSelectState(this._question);
final QuestionData _question;
final SliverGridDelegate delegate =
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2);
int _selectedIndex;
@override
Widget build(BuildContext context) {
return GridView.builder(
gridDelegate: delegate,
padding: EdgeInsets.all(0),
itemCount: _question.selectOptions.length,
itemBuilder: (context, index) {
return RadioListTile(
groupValue: _selectedIndex,
title: Text(_question.selectOptions[index]),
value: index,
onChanged: (newIndex) {
setState(() {
_selectedIndex = newIndex;
});
},
);
},
);
}
}
В результате:
Я хочу следовать как можно более «флаттерным» способом.Как ты считаешь, моя лучшая причина для действий?