如何在Flutter的索引内向单个图像添加onTap?

问题描述

问题:我正在使用带有图像索引的网格内的切换按钮。当用户点击其他图像时,切换按钮会起作用,并以蓝色边框突出显示所选图像,但不会通过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;},

错误提示您放置在此处的打印没有返回任何内容。