我有一个复选框旁边的文本我想当用户点击文本复选框是启用/禁用,我怎么能做到这一点?
Widget buildRememberCb() {
return Container(
height: 200,
child: Row(
textDirection: TextDirection.rtl,
children: [
Theme(
data: ThemeData(unselectedWidgetColor: Colors.white),
child: Checkbox(
value: isRememberMe,
checkColor: Color(0xfff44336),
activeColor: Colors.white,
onChanged: (value) {
setState(() {
isRememberMe = value!;
});
},
),
),
Text(
"Remember Me",
style: TextStyle(
fontWeight: FontWeight.w900, fontSize: 18, color: Colors.white),
),
],
),
);
}
用GestureDetector
包裹Text
,改变onTap
中isRememberMe
的值,
Widget buildRememberCb() {
return Container(
height: 200,
child: Row(
textDirection: TextDirection.rtl,
children: [
Theme(
data: ThemeData(unselectedWidgetColor: Colors.white),
child: Checkbox(
value: isRememberMe,
checkColor: Color(0xfff44336),
activeColor: Colors.white,
onChanged: (value) {
setState(() {
isRememberMe = value!;
});
},
),
),
GestureDetector(
onTap: (){
setState((){
isRememberMe = isRememberMe ? false : true;
});
},
child: Text(
"Remember Me",
style: TextStyle(
fontWeight: FontWeight.w900, fontSize: 18, color: Colors.white),
),
),
],
),
);
}
如果你想要墨水飞溅,你可以用InkWell
代替GestureDetector
,但更好的方法是使用TextButton
,
TextButton(
onPressed: () {
setState((){
isRememberMe = isRememberMe ? false : true;
});
},
child: Text(
"Remember Me",
style: TextStyle(
fontWeight: FontWeight.w900,
fontSize: 18,
color: Colors.white,
),
),
),