【发布时间】:2021-01-30 20:44:40
【问题描述】:
我创建了一个具有 ToggleButtons 的 GridView。我能够一次选择一个 ToggleButton,但我需要将 ToggleButtons 放置在 3 行中,因此总共有 9 个 ToggleButtons。为此,我将它们放置在 GridView 中,但返回时出现错误,提示“children.length == isSelected.length”:不正确。如下所示。
下面是带有 GridView 和 ToggleButtons 的代码:
class Backgrounds extends StatefulWidget {
@override
_BackgroundsState createState() => _BackgroundsState();
}
class _BackgroundsState extends State<Backgrounds> {
List<bool> isSelected;
void initState() {
isSelected = [true, false, false, false, false, false, false, false, false];
super.initState();
}
@override
Widget build(BuildContext context) {
return GridView.count(
crossAxisCount: 2,
children: <Widget> [
Image.asset('images/image1.png'),
Image.asset('images/image2.png'),
Image.asset('images/image3.png'),
Image.asset('images/image4.png'),
Image.asset('images/image5.png'),
Image.asset('images/image6.png'),
Image.asset('images/image7.png'),
Image.asset('images/image8.png'),
Image.asset('images/image9.png')
].asMap().entries.map((widget) {
Container(
height: 100,
width: 107,
child: ToggleButtons(
children: [widget.value],
onPressed: (int index) {
setState(() {
for (int i = 0; i < isSelected.length; i++) {
isSelected[i] = i == index;
}
});
},
isSelected: (isSelected),
selectedBorderColor: Color(0xff2244C7),
borderWidth: 3,
borderRadius: BorderRadius.all(Radius.circular(8)
),
),
);
}).toList(),
);
}
}
我附上了解决方案的图片。
【问题讨论】:
标签: flutter gridview rows togglebutton selected