[英]How to change the state of the checkbox?
我正在为移动应用程序设计UI。 我如何实现一个复选框,将其状态从“假”更改为“真”,反之亦然?
bool _value1 = false;
new CheckboxListTile(
value: _value1,
onChanged: (bool val) => setState(() => _value1 = val),
title: new Text('Remember me'),
controlAffinity: ListTileControlAffinity.leading,
activeColor: Colors.black,
),
我没有收到任何错误,但是当我单击复选框时,它没有更改其状态。
编辑:完整的代码是这样的-
bool _value1 = false;
return Scaffold(
backgroundColor: Colors.white,
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/background.jpg"),
fit: BoxFit.fill,
),
),
child: Column(
children: <Widget>[
SizedBox(height: 258.0),
username,
SizedBox(height: 22.0),
password,
SizedBox(height: 4.0),
new CheckboxListTile(
value: _value1,
onChanged: (bool val) => setState(() => _value1 = val),
title: new Text('Remember me'),
controlAffinity: ListTileControlAffinity.leading,
activeColor: Colors.black,
),
SizedBox(height: 8.0),
loginButton,
SizedBox(height: 58.0),
new Text(' Version 1.1'),
],
) ,
),
);
里面有回程脚手架
class LoginPage extends StatefulWidget {
static String tag = 'login-page';
@override
_LoginPageState createState() => new _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
@override
Widget build(BuildContext context) {.....}
用户名,密码和登录按钮是其他小部件。
代码中的问题是您使用了错误的方式。 请尝试以下代码:
bool _value1 = false;
new CheckboxListTile(
value: _value1,
onChanged: () {
if (_value1 == false) {
setState(() => _value1 = true)
} else {
setState(() => _value1 = false)
}
},
title: new Text('Remember me'),
controlAffinity: ListTileControlAffinity.leading,
activeColor: Colors.black,
),
我看到了问题,您必须将其排除在外: bool _value1 = false;
每次调用setState
,您都在告诉框架进行重建,因此再次调用了build方法,这就是setState所做的事情,就像您再次调用build方法一样。 因此解决方案将其bool _value1 = false;
在build方法之外,因此var可以更改,现在始终为false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.