我无法 check/uncheck 复选框(抖动)

I am not able to check/uncheck the checkbox(flutter)

这是最低代码 我无法 check/uncheck 复选框。怎么办??

         Row(
           children:<Widget>[
           Text("English"),
           Checkbox(
            checkColor: Theme.of(context).primaryColor,
            value:false,
            onChanged: (bool value) {
              setState(() {
                if(value==true) {
                  lang.languages = "English";
                  print(value);
                }
              });
            },
          )])

您无法与复选框交互主要是因为您传递给 value 属性

的静态布尔值
value:false,

您需要这样做:

         bool checkboxState = false;

         Row(
           children:<Widget>[
           Text("English"),
           Checkbox(
            checkColor: Theme.of(context).primaryColor,
            value:checkboxState,
            onChanged: (bool value) {
              setState(() {
                checkboxState = !checkboxState;
                if(value==true) {
                  lang.languages = "English";
                  print(value);
                }
              });
            },
          )])
    ```
bool checkboxState = false;

         Row(
           children:<Widget>[
           Text("English"),
           Checkbox(
            checkColor: Theme.of(context).primaryColor,
            value:checkboxState,
            onChanged: (bool value) {
              setState(() {
                checkboxState = !checkboxState;
                if(value==true) {
                  lang.languages = "English";
                  print(value);
                }
              });
            },
          )])

   Checkbox(
    checkColor: Theme.of(context).primaryColor,
    value:false,  // <-- If you put a value (true/false) here, it'll never change

相反,您需要创建一个变量...

bool myVariable = false // Somewhere far up in your class, before your build function begins), 

然后你用那个....

   Checkbox(
    checkColor: Theme.of(context).primaryColor,
    value: myVariable

单击复选框时切换它:

     onChanged: (bool value) {  // <-- notice that the value is the new state of the checkbox.
       setState(() {
          myVariable = value;
       });
     },

因为你没有改变value:false的值:)

尝试像这样实现它:

class _MyWidgetState extends State<MyWidget> {
  bool checkboxState = false;

  void _setEnglish(bool newValue) => setState(() {
    checkboxState = newValue;

    if (checkboxState) {
      lang.languages = "English";
    }
  });

  @override
  Widget build(BuildContext context) {
    return Checkbox(
      value: checkboxState,
      onChanged: _setEnglish
    );
  }
}