返回

Flutter 2 的 Sound null safety 是个什么鬼?!

前端

Flutter 2 中的 Sound null safety 是什么?

Sound null safety 是一种语言特性,它可以帮助您编写更健壮的代码。它通过在编译时检查空指针来做到这一点,从而防止 NullPointerException 这样的错误发生。

在 Flutter 2 之前,Dart 语言并不支持 Sound null safety。这意味着开发人员必须手动检查空指针,这可能会很耗时且容易出错。现在,有了 Sound null safety,您只需在变量上添加一个 ! 符号即可指示它不能为空。编译器将检查该变量是否为空,如果为空,则会抛出错误。

Sound null safety 的好处

Sound null safety 有很多好处,包括:

  • 更健壮的代码: Sound null safety 可以帮助您编写更健壮的代码,因为编译器会检查空指针并防止 NullPointerException 这样的错误发生。
  • 更少的错误: Sound null safety 可以帮助您减少错误的数量,因为您不必再手动检查空指针了。
  • 更高的生产率: Sound null safety 可以帮助您提高生产率,因为您不必再花时间来调试 NullPointerException 这样的错误了。

Sound null safety 的用法

要在 Flutter 2 中使用 Sound null safety,您只需在变量上添加一个 ! 符号即可。例如:

String? name; // 允许为 null
String name! = "Bob"; // 不允许为 null

如果您尝试访问一个为 null 的变量,编译器将抛出错误。例如:

print(name!.length); // 编译器错误:name 可能是 null

要避免此错误,您可以使用 ?? 运算符来提供一个默认值。例如:

print(name?.length ?? 0); // 如果 name 为 null,则打印 0

Sound null safety 的示例

以下是一些使用 Sound null safety 的示例:

  • 检查文本字段是否为空:
final String? text = textField.text;
if (text!.isEmpty) {
  // 文本字段为空
}
  • 检查列表是否为空:
final List<String>? list = myList;
if (list!.isEmpty) {
  // 列表为空
}
  • 检查对象是否为 null:
final MyObject? object = myObject;
if (object!.name == null) {
  // 对象的 name 属性为 null
}

总结

Sound null safety 是一种语言特性,它可以帮助您编写更健壮的代码。它通过在编译时检查空指针来做到这一点,从而防止 NullPointerException 这样的错误发生。Sound null safety 有很多好处,包括更健壮的代码、更少的错误和更高的生产率。