我有一个芯片列表,我希望它们在用户点击时改变颜色。
例如,如果我点击第一个芯片,它的颜色变为黑色,而其他所有芯片都是灰色的。然后,如果我点击第二个芯片,它的颜色变为黑色,第一个芯片颜色变为灰色等等。
我找不到一个漂亮/简单的方法来做这个,有什么想法吗?
非常感谢
答案 0 :(得分:1)
以下是如何做到这一点:
Widget _myChip(int number, String name) {
return new Padding(
padding: const EdgeInsets.all(8.0),
child: new InkWell(
child: new Chip(
label: new Text(name,
style: new TextStyle(
color: selectedChip == number ? Colors.white : Colors.black
),),
backgroundColor:
selectedChip == number ? Colors.black : Colors.grey),
onTap: () {
setState(() {
selectedChip = number;
});
},
),
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Stackoverflow'),
),
body: new Column(
children: <Widget>[
_myChip(1, 'Arnold'),
_myChip(2, 'Sylvester'),
_myChip(3, 'Priscilla'),
_myChip(4, 'Parge'),
_myChip(5, 'Something'),
],
),
);
}
如果要更改芯片的颜色,您需要为芯片提供唯一的编号以识别并使用内联。