onTap会更改所有卡片的颜色,而不仅仅是被点击的卡片的颜色

时间:2018-12-09 13:20:53

标签: flutter

我正在显示一个产品列表(使用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

0 个答案:

没有答案
相关问题