OnPressed Установите activeColor для кнопки списка и установите inactiveColor для других btns - Flutter - PullRequest
0 голосов
/ 17 мая 2018

У меня есть список чипов, и я хочу, чтобы они меняли цвет, когда пользователь нажимает на них.

Например, если я нажимаю на первый чип, его цвет становится черным, а все остальные чипы серыми.Затем, если я нажму второй чип, его цвет станет черным, а первый цвет чипа станет серым и т. Д.

Я не могу найти красивый / простой способ сделать это, у вас есть идеи?

Большое спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Вот как вы можете это сделать:

  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'),
        ],
      ),
    );
  }

Вам необходимо присвоить фишкам уникальный номер для идентификации и использования встроенного кода при изменении цвета фишек.

...