Как изменить 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();
},
)