Трепетание: отметка CheckboxTile не меняется

#flutter

#трепетание

Вопрос:

Я пытаюсь использовать Checkboxtile в Flutter. Однако нажатие на нее не изменяет состояние галочки.

Вот код:

 bool checkedValue = false;
    CheckboxListTile(
    title: Text("title text"),
    value: checkedValue,
    onChanged: (newValue) { 
                 setState(() {
                   checkedValue = newValue; 
                 }); 
               },
    //onChanged: (newValue) { ... },
    controlAffinity: ListTileControlAffinity.leading,  //  <-- leading Checkbox
  ),
  

Почему это не работает?

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

1. bool checkedValue = false; есть ли эта строка в методе сборки?

Ответ №1:

Это может сработать для вас.

 class CheckBoxCustom extends StatefulWidget {
  @override
  _CheckBoxCustomState createState() => _CheckBoxCustomState();
}

class _CheckBoxCustomState extends State<CheckBoxCustom> {
  bool checkedValue = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: CheckboxListTile(
          title: Text("title text"),
          value: checkedValue,
          onChanged: (newValue) {
            setState(() {
              checkedValue = newValue;
            });
          },
          controlAffinity:
              ListTileControlAffinity.leading, //  <-- leading Checkbox
        ),
      ),
    );
  }
}
  

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

1. Я думаю, что я использую аналогичный код. Но все равно ошибка. Позвольте мне создать новый файл и попробовать ваш код.

Ответ №2:

попробуйте это:

  1. Создайте bool, т.Е. bool IsChecked= false;

                                        Checkbox(
                                       activeColor: Colors.white30,
                                       checkColor: Colors.white,
                                       value: isCheck,
                                       tristate: false,
                                       onChanged: (bool isChecked) {
                                         setState(() {
                                           isCheck = isChecked;
                                         });
                                       },
                                     )