空类型安全声明 (sound null safety)

空类型安全声明 (sound null safety) 是自 Dart 2.0 引入声明类型系统 (sound type system) 以来,对 Dart 语言最大的补充。空类型安全 (null safety) 进一步增强了类型系统,让开发者在开发阶段即可捕获 null 错误,从而防止在生产环境出现崩溃,毕竟 null 错误是导致应用崩溃的常见原因。

Dart 的空类型安全支持基于三条核心原则

  • 默认情况下不可为空
  • 逐步采用空类型安全声明
  • 完全空类型安全声明

Dart FFI,用于将 C 类库与 Dart 集成

Dart FFI 让开发者能够利用 C 类库中现成的代码,以实现更好的可移植性,并且通过与高度调整的 C 语言代码集成以执行对性能要求较高的任务。从 Dart 2.12 开始,Dart FFI 已经脱离 beta 阶段,并被认为是稳定功能,可用于生产环境。此外还新增了嵌套结构和按值传递结构。

嵌套结构

C API 通常使用嵌套结构——即本身包含结构体的结构,例如以下示例:

struct Wheel {
  int spokes;
};
struct Bike {
  struct Wheel front;
  struct Wheel rear;
  int buildYear;
};

从 Dart 2.12 开始,FFI 也已支持嵌套结构。

按值传递结构

开发者可以在 C 语言代码中按引用和按值传递结构。FFI 以前仅支持按引用传递,但从 Dart 2.12 开始,开发者可以按值传递结构。这是两个同时通过引用传递和值传递的 C 函数的示例:

struct Link {
  double value;
  Link* next;
};
void MoveByReference(Link* link) {
  link->value = link->value + 10.0;
}
Coord MoveByValue(Link link) {
  link.value = link.value + 10.0;
  return link;
}

发布公告还详细介绍了 FFI 的其他内容,详情点此查看