Как создать динамический цвет для переключателя на флаттере?

#flutter

Вопрос:

Как я могу изменить цвет переключателя, если значение также изменилось ?

вот радиобуттон

 CustomRadioButton(
            horizontal: false,
            elevation: 0,
            absoluteZeroSpacing: false,
            width: 150,
            enableButtonWrap: true,

            //* warna radio button
            selectedColor: warna(),
            unSelectedColor: Color(0XFF343f56),
            // selectedBorderColor: Colors.pink,
            // unSelectedBorderColor: Colors.cyan,
            buttonTextStyle: ButtonTextStyle(selectedColor: Colors.white),
            enableShape: true,
            buttonLables: _buttonLables,
            buttonValues: _buttonValue,
            radioButtonValue: (value) {
              _radio = value;
              print(_radio);
            },
          )
 

и это функция warna

 String _radio; //* value radio button
  List<String> _buttonLables = ['Pengeluaran', 'Pemasukan'];
  List<String> _buttonValue = ['PENGELUARAN', 'PEMASUKAN'];

  warna() {
    if (_radio == null) {
      return Colors.blue;
    } else if (_radio == 'PENGELUARAN') {
      return Colors.red;
    } else if (_radio == 'PEMASUKAN') {
      return Colors.green;
    }
  }
 

Я использую виджет с отслеживанием состояния, но цвет меняется только при горячей перезагрузке кода

Комментарии:

1. вы звоните setState( () {} ) после смены цвета?

2. Я так не думаю, я все еще учусь Трепетать

3. Вам придется позвонить setState( () {} ) после изменения цвета… setState перестраивает виджет

4. О, я понял, мне нужно установить состояние на значение радиобуттона

Ответ №1:

Я должен установить состояние, когда значение изменилось

 radioButtonValue: (value) {
              setState(() {
                _radio = value;
              });
              // _radio = value;
              print(_radio);
            },