Colors 按下将activeColor设置为列表的按钮,并将inactiveColor设置为其他BTN-颤振

Colors 按下将activeColor设置为列表的按钮,并将inactiveColor设置为其他BTN-颤振,colors,flutter,onclick,android-chips,onpress,Colors,Flutter,Onclick,Android Chips,Onpress,我有一个芯片列表,当用户点击它们时,我想让它们改变颜色 例如,如果我点击第一个芯片,它的颜色会变成黑色,而其他芯片都是灰色的。然后,如果我点击第二个芯片,它的颜色变成黑色,第一个芯片的颜色变成灰色,依此类推 我找不到一个漂亮/简单的方法来做这件事,你有什么想法吗 非常感谢以下是您的方法: Widget _myChip(int number, String name) { return new Padding( padding: const EdgeInsets.all(8

我有一个芯片列表,当用户点击它们时,我想让它们改变颜色

例如,如果我点击第一个芯片,它的颜色会变成黑色,而其他芯片都是灰色的。然后,如果我点击第二个芯片,它的颜色变成黑色,第一个芯片的颜色变成灰色,依此类推

我找不到一个漂亮/简单的方法来做这件事,你有什么想法吗


非常感谢

以下是您的方法:

  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'),
        ],
      ),
    );
  }
Widget\u myChip(整数、字符串名){
返回新的填充(
填充:常数边集全部(8.0),
孩子:新墨水井(
孩子:新芯片(
标签:新文本(名称,
样式:新文本样式(
颜色:selectedChip==数字?颜色。白色:颜色。黑色
),),
背景颜色:
selectedChip==数字?颜色。黑色:颜色。灰色),
onTap:(){
设置状态(){
所选芯片=编号;
});
},
),
);
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“Stackoverflow”),
),
正文:新栏目(
儿童:[
_myChip(1,“Arnold”),
_myChip(2,“西尔维斯特”),
_myChip(3,“Priscilla”),
_myChip(4,‘Parge’),
_myChip(5,“某物”),
],
),
);
}

您需要给芯片一个唯一的编号来识别,如果要更改芯片的颜色,请使用内联

以下是您的操作方法:

  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'),
        ],
      ),
    );
  }
Widget\u myChip(整数、字符串名){
返回新的填充(
填充:常数边集全部(8.0),
孩子:新墨水井(
孩子:新芯片(
标签:新文本(名称,
样式:新文本样式(
颜色:selectedChip==数字?颜色。白色:颜色。黑色
),),
背景颜色:
selectedChip==数字?颜色。黑色:颜色。灰色),
onTap:(){
设置状态(){
所选芯片=编号;
});
},
),
);
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“Stackoverflow”),
),
正文:新栏目(
儿童:[
_myChip(1,“Arnold”),
_myChip(2,“西尔维斯特”),
_myChip(3,“Priscilla”),
_myChip(4,‘Parge’),
_myChip(5,“某物”),
],
),
);
}
您需要给芯片一个唯一的编号来识别,如果要更改芯片的颜色,请使用内联