如何在颤动中循环图标?
How to loop icons in flutter?
我有数据列表,我想声明每个列表都有一个图标...每当用户单击该图标时..该图标将变为另一个图标..这是代码
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.."),
],
),
],
),
),
],
);
}),
从该代码..在用户单击第一个图标后...列表视图生成器中的所有图标都已更改..有没有办法只更改我单击的图标(不是所有图标)的图标?
您可以维护您为匹配变量所做的选定列表小部件的索引
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.."),
],
),
],
),
);
}
}
将小部件添加到 ListView
itemBuilder: (context, index) {
return ListItem();
}
我有数据列表,我想声明每个列表都有一个图标...每当用户单击该图标时..该图标将变为另一个图标..这是代码
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.."),
],
),
],
),
),
],
);
}),
从该代码..在用户单击第一个图标后...列表视图生成器中的所有图标都已更改..有没有办法只更改我单击的图标(不是所有图标)的图标?
您可以维护您为匹配变量所做的选定列表小部件的索引
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.."),
],
),
],
),
);
}
}
将小部件添加到 ListView
itemBuilder: (context, index) {
return ListItem();
}