彩虹下载站

首页 > 文章资讯 > 最新资讯

Dart 2.12已发布 具有空安全性和C互操作性

作者:佚名 来源:彩虹下载站 时间:2021-03-09

空安全空安全是一项非常出色的语言功能。它迫使您考虑变量是否会为空,并显式处理潜在的空情况,同时还可以保证特定的变量永远不会为空。在Dart 2.12中,现在完全支持null安全,其语法类似于Swift和Kotlin。甚至还有智能广播,如果Dart确信正常可为空的变量不能为null,它将隐式将其强制转

Dart 2.12已发布 具有空安全性和C互操作性

空安全

空安全是一项非常出色的语言功能。它迫使您考虑变量是否会为空,并显式处理潜在的空情况,同时还可以保证特定的变量永远不会为空。

 

在Dart 2.12中,现在完全支持null安全,其语法类似于Swift和Kotlin。甚至还有智能广播,如果Dart确信正常可为空的变量不能为null,它将隐式将其强制转换为非可为空的形式。

由于null安全是一项(非常)重大的更改,因此该功能是可选的。如果您更新到Dart 2.12,则编译不会中断,也不必花费数小时向所有内容添加可空性提示。如果您的项目还不是null安全的,那么您甚至可以使用null安全的依赖项。

d

一旦确定要迁移,就可以使用内置的迁移工具(dart migration )和/或迁移指南进行所有设置。

Dart 2.12已发布 具有空安全性和C互操作性

此外,尽管Dart 2.12中包含了零安全,但是如果您创建新的Flutter或Dart项目,则不会立即启用零安全。您需要运行迁移工具或使用指南来启用它。

 

外部功能接口

尽管Dart(和Flutter的重点)是完全跨平台的兼容性,但是仍然有些事情需要本地完成。为了简化本机操作,Dart具有外部功能接口或FFI。FFI使您可以与Dart中的C代码进行交互,而不必诉诸基于字符串的怪异API调用或其他笨拙的互操作性方法。

 

借助Dart 2.12,FFI现在很稳定,这意味着它已准备好用于生产项目,并且功能齐全。

 

考虑到这一点,FFI进行了一些更改,包括一些重大更改。

 

此版本的重点主要在于如何将结构与Dart和C一起使用。其中之一,您现在可以按引用和值在C代码中传递结构,而以前仅支持引用。另一个重要功能是对嵌套结构的支持,此版本之前没有提供。

 

现在进行重大更改。如果您使用的是FFI,则可能需要更新代码才能使用2.12。使用此版本的FFI,您将无法再创建空结构。如果由于某种原因需要一个,则可以使用新的“ Opaque”类型。FFI内置功能的工作方式也有一些更改,您可以在此处阅读。

Dart 2.12已发布 具有空安全性和C互操作性

最后,还有一个用于FFI的新程序包,可用于从现有C头文件中生成FFI包装器,称为ffigen。如果您需要使用大量的C代码以及许多API方法,这将非常有用。即使您拥有的C代码量很少,这也是一个不错的便利功能。