Как я могу использовать контроллеры в группе радио в flutter?

#flutter #controller #radio-button

#flutter #контроллер #переключатель

Вопрос:

Я пытаюсь получить входные данные пользователя с различными типами, такими как текстовые данные и данные, сгруппированные переключателями.

Например, для ввода текстового типа я использую TextEditingControllers ;

 final quantNumberController = TextEditingController();

String quant = quantNumberController.text;
var data = {'quant': quant, 'capp': capp}
  

   Container(
      width: 280,
      padding: EdgeInsets.all(10.0),
      child: TextField(
        controller: quantNumberController,
        autocorrect: true,
        decoration: InputDecoration(hintText: 'Enter location'),
      )
  ),
  

И я хочу получать данные переключателей, как показано ниже, но есть ли какой-либо способ использовать контроллеры в ListTiles или как я могу получить пользовательский выбор для моих данных json ;

   Container(
      margin: EdgeInsets.fromLTRB(0, 0, 0, 10),
      child: Column(
        children: <Widget>[
          Text('Location'),
          ListTile(
            title: const Text('First value'),
            leading: Radio(
              value: Cap.Cap33,
              groupValue: _capp,
              onChanged: (Capp value) {
                setState(() {
                  _capp = value;
                  capp = 'Cap33';
                });
              },
            ),
          ),
          ListTile(
            title: const Text('Second value'),
            leading: Radio(
              value: Capp.Cap22,
              groupValue: _capp,
              onChanged: (Capp value) {
                setState(() {
                  _capp = value;
                  capp = 'Cap22';
                });
              },
            ),
          ),
          ListTile(
            title: const Text('Third value'),
            leading: Radio(
              value: Capp.Cap44,
              groupValue: _capp,
              onChanged: (Capp value) {
                setState(() {
                  _capp = value;
                  capp = 'Cap44';
                });
              },
            ),
          ),
        ],
      ) ,
  ),
  

Ответ №1:

В вашем примере выбор пользователя сохраняется _capp .

Давайте создадим новый:

 int every_many_days;
RadioListTile<int>(
    title: Text('Every Day'),
    value: 1,
    groupValue: every_many_days,
    onChanged: (int value){
      setState(() {every_many_days = value;});
    },
),
RadioListTile<int>(
    title: Text('Every Week'),
    value: 7,
    groupValue: every_many_days,
    onChanged: (int value){
      setState(() {every_many_days = value;});
    },
),
  

Теперь выбор доступен в переменной every_many_days , он будет 1 или 7, и вам не нужен контроллер.