Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何在flatter中循环图标?_Loops_Flutter_Widget_Icons - Fatal编程技术网

Loops 如何在flatter中循环图标?

Loops 如何在flatter中循环图标?,loops,flutter,widget,icons,Loops,Flutter,Widget,Icons,我有一个数据列表,我想声明每个列表都有一个图标。。。每当用户单击图标时。。图标将更改为另一个图标。。这是密码 ListView.builder( itemCount: data.length, itemBuilder: (context, index) { return Column( children: <Widget>[

我有一个数据列表,我想声明每个列表都有一个图标。。。每当用户单击图标时。。图标将更改为另一个图标。。这是密码

ListView.builder(
              itemCount: data.length,
              itemBuilder: (context, index) {
                return Column(
                  children: <Widget>[
                    ListTile(
                      leading: InkWell(
                        onTap: () {
                          setState((){
                             match=true;
                           });
                        },
                        child: 
                         match
                             ? Icons.check
                             : Icons.error
                      ),
                      title: Text(data[index],),
                      subtitle: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Row(
                            children: [
                              Text("subs here.."),
                            ],
                          ),
                        ],
                      ),
                    ),
                  ],
                );
              }),

ListView.builder(
itemCount:data.length,
itemBuilder:(上下文,索引){
返回列(
儿童:[
列表砖(
引导:InkWell(
onTap:(){
设置状态(){
匹配=真;
});
},
儿童:
比赛
?图标。检查
:Icons.error
),
标题:文本(数据[索引],),
副标题:专栏(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
划船(
儿童:[
文本(“此处的子项…),
],
),
],
),
),
],
);
}),

从那个密码。。用户单击第一个图标后。。。列表视图生成器中的所有图标都已更改。。是否有办法仅更改我单击的图标的图标(不是所有图标)?

您可以维护所选列表小部件的索引,就像您为匹配变量所做的那样

                     setState((){
                             match=true;
                             _index = index;
                             });
然后添加一个条件,如

           match && _index == index
                     ? Icons.check
                     : Icons.error
              ),

您可以维护所选列表小部件的索引,就像您为匹配变量所做的那样

                     setState((){
                             match=true;
                             _index = index;
                             });
然后添加一个条件,如

           match && _index == index
                     ? Icons.check
                     : Icons.error
              ),

在自己的有状态小部件中分离列表项,以便每个列表项都可以保持自己的状态

class ListItem extends StatefulWidget {
  @override
  _ListItemState createState() => _ListItemState();
}

class _ListItemState extends State<ListItem> {
  bool match = false;

  @override
  Widget build(BuildContext context) {
    return ListTile(
      leading: InkWell(
          onTap: () {
            setState(() {
              match = true;
            });
          },
          child: Icon(match ? Icons.check : Icons.error)),
      title: Text(
        "asd",
      ),
      subtitle: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            children: [
              Text("subs here.."),
            ],
          ),
        ],
      ),
    );
  }
}

在自己的有状态小部件中分离列表项,以便每个列表项都可以保持自己的状态

class ListItem extends StatefulWidget {
  @override
  _ListItemState createState() => _ListItemState();
}

class _ListItemState extends State<ListItem> {
  bool match = false;

  @override
  Widget build(BuildContext context) {
    return ListTile(
      leading: InkWell(
          onTap: () {
            setState(() {
              match = true;
            });
          },
          child: Icon(match ? Icons.check : Icons.error)),
      title: Text(
        "asd",
      ),
      subtitle: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Row(
            children: [
              Text("subs here.."),
            ],
          ),
        ],
      ),
    );
  }
}

我喜欢这个答案。它是相当优化的。这应该标记为正确答案。嗨。。等一下,我会试试看,然后让你知道结果。它很好地工作,就像我想要的一样。。非常感谢你的帮助:我喜欢这个答案。它是相当优化的。这应该标记为正确答案。嗨。。等一下,我会试试看,然后让你知道结果。它很好地工作,就像我想要的一样。。非常感谢您的帮助:DHi。。我会试试看,然后告诉你结果。。我会试试看,然后告诉你结果