Class Dart确保类中的可选布尔值不为空
由于它是一个可选值,有时会为null,因此如何避免它抛出错误?这是唯一的办法吗Class Dart确保类中的可选布尔值不为空,class,flutter,dart,null,Class,Flutter,Dart,Null,由于它是一个可选值,有时会为null,因此如何避免它抛出错误?这是唯一的办法吗 class QText extends StatelessWidget { QText(this.text, this.size, [this.bold]); final String text; final double size; bool bold; @override Widget build(BuildContext context) { bold = (bold ==
class QText extends StatelessWidget {
QText(this.text, this.size, [this.bold]);
final String text;
final double size;
bool bold;
@override
Widget build(BuildContext context) {
bold = (bold == null) ? false : bold;
return Whatever..
}
}
我很想这样做,但当然不行:
class QText extends StatelessWidget {
QText(this.text, this.size, [this.bold]);
final String text;
final double size;
final bool bold ?? false;
@override
Widget build(BuildContext context) {
return Whatever..
}
}
您需要为构造函数内的变量定义默认值: 如下图所示:
QText(this.text, this.size, [this.bold = false]): assert(bold != null,"bold cannot be null.");
若在粗体变量中未传递任何内容,则默认值为false
编辑
您可以使用断言来防止用户传递null,如果断言失败,您还可以打印消息
assert(bold != null,"bold cannot be null.")
您需要为构造函数内的变量定义默认值: 如下图所示:
QText(this.text, this.size, [this.bold = false]): assert(bold != null,"bold cannot be null.");
若在粗体变量中未传递任何内容,则默认值为false
编辑
您可以使用断言来防止用户传递null,如果断言失败,您还可以打印消息
assert(bold != null,"bold cannot be null.")
由于字段是最终字段,请尝试在构造函数初始化期间传递默认值 还要添加一个assert语句,以确保它从未初始化为null 例如:
class QText extends StatelessWidget {
QText(this.text, this.size, [this.bold = false]) : assert(bold != null);
final String text;
final double size;
final bool bold;
@override
Widget build(BuildContext context) {}
}
希望有帮助 由于字段是最终字段,请在构造函数初始化期间尝试传递默认值 还要添加一个assert语句,以确保它从未初始化为null 例如:
class QText extends StatelessWidget {
QText(this.text, this.size, [this.bold = false]) : assert(bold != null);
final String text;
final double size;
final bool bold;
@override
Widget build(BuildContext context) {}
}
希望有帮助 目前,Dart中的所有类型都可以为空。即使使用默认值,也可以显式地将null作为参数传递。如果要绝对确定该值不为null,则必须保护设置该值的所有方法。在最初的示例中,粗体变量是public而不是final,这意味着您还必须保护setter 最后一个变量的示例:
class QText extends StatelessWidget {
QText(this.text, this.size, [bool bold]) : this.bold = bold ?? false;
final String text;
final double size;
final bool bold;
...
}
带有可设置粗体的示例:
您可以使用默认值,但它不能为您带来任何安全方面的好处。不过,它作为文档很有用。目前,Dart中的所有类型都可以为空。即使使用默认值,也可以显式地将null作为参数传递。如果要绝对确定该值不为null,则必须保护设置该值的所有方法。在最初的示例中,粗体变量是public而不是final,这意味着您还必须保护setter 最后一个变量的示例:
class QText extends StatelessWidget {
QText(this.text, this.size, [bool bold]) : this.bold = bold ?? false;
final String text;
final double size;
final bool bold;
...
}
带有可设置粗体的示例:
您可以使用默认值,但它不能为您带来任何安全方面的好处。不过,它作为文档很有用。这个问题似乎很快就过时了,因为在这种情况下,该语言很快就会防止null。在dev通道中已提供空安全性
更多信息:这个问题似乎很快就过时了,因为在这种情况下,语言很快就会阻止null。在dev通道中已提供空安全性
更多信息:真的吗?因此,您可以像在Javascript中一样执行此操作。那很酷。不知道为什么我没有尝试lol。这并不能阻止调用方显式地将null作为参数传递。更新了答案。真的吗?因此,您可以像在Javascript中一样执行此操作。那很酷。不知道为什么我没有尝试lol。这并不能阻止调用方显式地将null作为参数传递。更新了答案。