我正在显示一个产品列表(使用ListView.builder),并且我试图使其显示,以便在敲击ListTile时,用于包装ListTile的卡的颜色发生变化。我的代码在下面。
相反,发生的是...当我单击其中一张卡时,整个屏幕都会更改颜色(在这种情况下为蓝色)-所有卡的颜色都已更改。
如何确保更改了我点击的卡的颜色,而不是所有卡的颜色?
class MyHomepage extends StatefulWidget {
final List<Product> productList;
const MyHomepage({Key key, this.productList}): super(key: key);
@override
MyHomepageState createState() => MyHomepageState();
}
class MyHomepageState extends State<MyHomepage> {
bool isSelected = false;
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: widget.productList.length,
itemBuilder: (context, index) {
return new Card(
color: isSelected ? Colors.lightBlueAccent : Colors.transparent,
child: ListTile(
title: Text('${widget.productList[index].name}'),
onTap: () {
setState(() {
isSelected = !isSelected;
});
},
)
);
},
);
} // build
} // MyHomepageState