如何将tristate
存档为具有nullsafety的复选框。我必须将null传入该值,但nullsafety必须对变量执行null检查,这只是矛盾的。
像往常一样进行null检查:
bool? parentvalue;
void update() {
parentvalue = null;
}
Checkbox(
....
value: parentvalue!,
onChanged: update(),
....
),
错误:对空值使用了校验运算符
如果删除空检查,代码根本无法编译
bool parentvalue;
void update() {
parentvalue = null;
}
Checkbox(
....
value: parentvalue,
onChanged: update(),
....
),
错误:无法将类型为“”的值赋给类型为“”的变量。
Checkbox(
tristate: true,
checkColor: Colors.white,
fillColor: MaterialStateProperty.resolveWith(getColor),
value: isChecked,
onChanged: (bool? value) {
setState(() {
isChecked = value!;
});
},
),
错误:对空值使用了校验运算符
如果我删除空校验
onChanged: (bool value) {
setState(() {
isChecked = value;
});
},
错误:无法将参数类型“void Function(bool)”分配给参数类型“void Function(bool?)?'.
6条答案
按热度按时间vjrehmav1#
您需要添加
tristate: true
才能接受null。此外,update()
方法需要更改,因为它在回调时提供了可空的bool
。和更新方法将是
关于
Checkbox
的更多信息,请访问flutter.dev。v2g6jxz62#
下面是将
tristate
设置为true
的示例:bhmjp9jg3#
三态属性用于将空值传递给复选框作为布尔值的位置,因此如果您想将空值传递给复选框而不显示任何错误,则必须将
true
值设置为名为tristate
的复选框的属性,如下所示6jjcrrmo4#
让我们来讨论一下网络安全是如何工作的。
如果你期望一个不应该为null的值(变量/对象),那么简单地将该值设置为null安全。在你的情况下
bool? parentvalue
。如果读取Checkbox属性(& F)
这里value是null安全性,你不能给它赋null值。
因此,如果您将parentvalue赋值为null,则Checkboxvalue属性将不接受此值。除了布尔值(true/false)。
因此,你应该根据需要将parentvalue设置为true或false。或者你也可以使用
value: parentvalue??false/true
来维护null安全。jckbn6z75#
你只需要使用var而不是bool?你会得到复选框的所有三种状态,即true,false和null。
ulmd4ohb6#
Checkbox的值必须为nut null
如果您希望在值为空时取消复选框,则可以使用此选项而不是空检查