【发布时间】:2021-10-13 12:25:06
【问题描述】:
我想创建两个小部件。 两者都显示带有可以选择/取消选择的按钮的 2 列网格。 一个应该有单选逻辑(单选),而另一个应该有复选框逻辑(多选)。
这是我尝试在 Flutter 中重新创建的 android 实现:
我尝试使用带有 RadioListTiles 的 GridView,我想我可以用我自己的小部件替换 RadioButton 图标,同时保留逻辑。 我看不出有任何方法可以做到这一点。 我还意识到 Flutter 中的 GridView 不会自动包装它的子元素,导致每个单选磁贴仅占据整个单元格的前 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;
});
},
);
},
);
}
}
导致:
我想尽可能地遵循最“Fluttery”的方式。 您认为我的最佳诉讼理由是什么?
【问题讨论】:
标签: android gridview dart flutter radio-button