Радиокнопки меняют значение из другого класса - PullRequest
0 голосов
/ 30 мая 2020

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

Вот отдельный виджет, который я хочу вызвать 6 раз из другого класса:

  class ChooseTime extends StatefulWidget {
      final int value;
      final int selection;
      final int num;
      final String time;
      final Function selectTime;
      ChooseTime(
          {this.selection, this.value, this.num, this.time, this.selectTime});
      @override
      _ChooseTimeState createState() => _ChooseTimeState();
    }

 Row(
            children: <Widget>[
              Radio(
                focusColor: Colors.white,
                activeColor: Colors.white,
                groupValue: _selection,
                onChanged: widget.selectTime,
                value: widget.value,
              ),
              Text(
                widget.time,
                style: TextStyle(
                  fontWeight: FontWeight.bold,
                  color: _selection == widget.num
                      ? Colors.white
                      : Colors.deepOrangeAccent,
                ),
              ),
            ],
          ),

А вот класс, в котором я вызываю виджет выше:

  selectTime(int timeSelected) {
    setState(() {
      _selection = timeSelected;
    });
  }


          Row(
                    mainAxisAlignment: MainAxisAlignment.spaceAround,
                    children: [
                      ChooseTime(
                        selection: 1,
                        value: 1,
                        num: 1,
                        time: "09:00-11:00",
                        selectTime: selectTime,
                      ),
                      ChooseTime(
                        selection: 2,
                        value: 2,
                        num: 2,
                        time: "11:00-14:00",
                        selectTime: selectTime,
                      ),
                    ],
                  ),

Я пробовал приведенный выше код, но когда я нажимаю кнопку, они не меняются.

1 Ответ

0 голосов
/ 30 мая 2020

Используйте Provider, blo c Pattern для управления состоянием вашего приложения

...