我无法 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
);
}
}
这是最低代码 我无法 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
);
}
}