空类型安全声明 (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 的其他内容,详情点此查看。