问题描述
问题:我正在使用带有图像索引的网格内的切换按钮。当用户点击其他图像时,切换按钮会起作用,并以蓝色边框突出显示所选图像,但不会通过Onpressed或OnTap触发所选图像的特定操作。
我的解决方案:我已经尝试过向索引内的单个图像添加onTap或Onpressed,但是它说“此表达式具有'void'类型,因此无法使用它的值。”并且不适用于打印语句。
class Backgrounds extends StatefulWidget {
@override
_Backgroundsstate createState() => _Backgroundsstate();
}
class _Backgroundsstate extends State<Backgrounds> {
List<bool> isSelected;
void initState() {
isSelected = [true,false,false];
super.initState();
}
@override
Widget build(BuildContext context) {
var counter = 0;
return GridView.count(
padding: EdgeInsets.all(10),crossAxisCount: 3,mainAxisspacing: 10,crossAxisspacing: 8,children: [
// Here is where I've added the onTap and the error comes up
InkWell(
onTap: print('hi'),child: 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) {
final index = ++counter - 1;
return ToggleButtons(
onpressed: (int index) {
setState(() {
for (int i = 0; i < isSelected.length; i++) {
isSelected[i] = i == widget.key;
}
});
},isSelected: [isSelected[widget.key]],selectedBorderColor: Color(0xff2244C7),borderColor: Colors.transparent,borderWidth: 1,borderRadius: BorderRadius.all(Radius.circular(8),children: [widget.value],);
}).toList());
}
}
解决方法
应该这样写:
onTap: () {do whatever you need;},
错误提示您放置在此处的打印没有返回任何内容。