управление несколькими состояниями flutter

#flutter #flutter-state

#флаттер #состояние flutter

Вопрос:

У меня есть коробка такого размера

     child: SizedBox(
        width: 50.0,
        height: 50.0,
        child: DecoratedBox(
          decoration: BoxDecoration(
              color: Colors.blue
          ),
        )
    ),
 

я хотел бы изменить цвет оформления окна в зависимости от значения элемента состояния с именем _status, _status может иметь четыре значения 1,2,3,4, и в зависимости от значения status я хотел бы изменить цвет оформления окна следующим образом
1 — синий
2 — красный
3- желтый
4 — зеленый

Обычно используемый троичный оператор не помогает, поскольку он хорош только для ограниченного числа значений состояния. есть ли способ, которым я могу это реализовать?

Спасибо

Ответ №1:

Вы можете определить вспомогательную функцию для вычисления значения цвета

 child: SizedBox(
     width: 50.0,
     height: 50.0,
     child: DecoratedBox(
       decoration: BoxDecoration(
           color: _getBoxColor(),
       ),
     )
 ),
 
//somewhere below build method
Color _getBoxColor() {
 switch (_status) {
   case 1:
     return Colors.blue;
   case 2:
     return Colors.red;
   ...
 }