Как изменить IconButton в зависимости от состояния?

Я хочу изменить цвет кнопки, если нажата кнопка iconButton и когда список загружается на основе условия, цвет iconButton будет изменен. У меня есть список, и в каждой строке списка у меня есть значок iconButton. Мне нужно изменить цвет с серого на синий при нажатии, и когда список снова загрузится, тогда мне нравится, нравилось ли мне раньше или нет, и на основе этого условия я должен изменить цвет.

new IconButton(
 icon: new Icon(Icons.thumb_up),
 color: Colors.grey,
   onPressed: (){
     documentId = list[index].id;
      _incrementCounter();
    },
   ),

Как я могу это сделать?

4 ответа

Мне сложно понять, когда нужно изменить цвет.

Вы можете изменить цвет на основе такой переменной:

color: _shouldBeRed ? Colors.red : Colors.grey,

предполагая, что у вас есть логическая переменная с именем _shouldBeRed.

Теперь вам может понадобиться одна такая переменная для каждой записи списка, если у вас есть одна кнопка для каждой записи списка. Может быть, у вас это уже есть. Возможно, вы можете добавить поле в свою модель данных для списка. Возможно, вы просто используете карту id и bool для всех ваших идентификаторов и bool, которые вам нужны. Вам нужно будет понять это, вы не дали мне достаточно информации, чтобы предложить хорошее решение этой проблемы.

new IconButton(
 icon: new Icon(Icons.thumb_up),
 color:isPressed ? Colors.blue : Colors.grey,
   onPressed: (){
     documentId = list[index].id;
      _incrementCounter();
    },
   ),

использовать ternary оператор.

Проверь это

new IconButton(
 icon: new Icon(Icons.thumb_up),
 //check here for your condition and switch the color as you want
 color: yourCondition?Colors.blue:Colors.grey,
 onPressed: (){
   documentId = list[index].id;
   _incrementCounter();
 },
),

Вы можете проверить код ниже. Используйте bool.

bool checkBoxState = false;

Потом,

IconButton(
  icon: new Icon(Icons.thumb_up),
  color: checkBoxState ? Colors.blue: Colors.grey,
  onPressed: () {
    documentId = list[index].id;
    _incrementCounter();
  },
)
Другие вопросы по тегам