Dart 2.16 现已发布
文 / Michael Thomsen, Dart 产品经理
Dart 2.16 正式发布
Dart 2.16 正式版已于上周发布。尽管没有新的语言特性加入,但本次版本发布包含了数个问题修复 (包括对安全漏洞的修复),发布 Dart package 的时候也可以指定支持的平台,pub.dev 网站也更新了全新的搜索界面。

与 Flutter 2.10 一同发布的 Dart 2.16,仍然在将旧的命令行工具迁移到新的 dart 命令行工具。这个版本中,dartdoc和 dartanalyzer 已被弃用,分别对应新的命令是 dart doc 和 dart analyze。dartdoc、dartanalyzer 和 pub 这三个命令计划在 Dart 2.17 中彻底移除。
| 历史命令 | 替代的 dart 命令 | 弃用版本 | 停用版本 |
|---|---|---|---|
| stagehand | dart create | 2.14 | 2.14 |
| dartfmt | dart format | 2.14 | 2.15 |
| dart2native | dart compile exe | 2.14 | 2.15 |
| dart2js | dart compile js | 2.17 | 2.18 |
| dartdevc | none | 2.17 | 2.18 |
| dartanalyzer | dart analyze | 2.16 | 2.17 |
| package:analyzer_cli | dart analyze | 2.16 | 2.17 |
| dartdoc | dart doc | 2.16 | 2.17 |
| pub | dart pub | 2.15 | 2.17 |
查看所有计划弃用的命令的更多说明,请参考 Dart SDK 仓库的 Issue #46100。
Dart 2.16 也包含了一个安全漏洞的修复,以及两个破坏性改动:
dart:io中的 HttpClient API 现在可以设置authroization、www-authenticate、cookie和cookie2这些请求头信息。在 Dart 2.16 之前,SDK 中重定向逻辑的实现有一个漏洞,当跨域重定向发生时,这些请求头 (可能包含敏感信息) 会被发送,在 Dart 2.16 中这些请求头已被移除,你可以阅读 CVE-2022–0451 了解更多细节。dart:io中的Directory.renameAPI 调整了在 Windows 平台上的行为:与目标名称一致的目录不会被删除 (issue #47653)。- 在 Dart 1.x 中遗留的
Platform.packageRoot和Isolate.packageRoot已被移除 (issue #47769),它们在 Dart 2.x 中不起作用。
想要了解更多关于 Dart 2.16 的改动,可以查阅 更新日志。
在 pub.dev 上声明 package 支持的平台
Dart 的设计思想包含了可移植性,因此我们会尽量让代码能够在更多平台上运行。然而,开发者们偶尔可能会在 pub.dev 上创建或分享仅为一个或几个平台设计的 package。你可能有一个依赖于特定操作系统上 API 的 package,或者它使用了像 dart:ffi 这类只能在 native 平台而不能在 Web 平台上使用的库等。
在 Dart 2.16 版本中,你可以在 pubspec 手动声明 package 支持的平台。例如,如果你的 package 只支持 Windows 和 macOS,那么就可以在 pubspec.yaml 这样声明:
name: mypackage
version: 1.0.0
platforms:
windows:
macos:
dependencies:
当你正在开发一个 Dart package,而它支持的平台与 pub.dev 自动识别的不同时,可以在新的 platforms 标签处手动声明。如果你正在开发和分享包含特定平台代码的 Flutter 插件 (例如,Kotlin 或 Swift),Flutter plugin 标签 可以指定支持的平台。
pub.dev 新的搜索体验
响应开发者的请求,我们对于在 pub.dev 上的搜索提供了更好的支持。此次更改的主要目的是帮助你区分和搜索支持的平台。以下是新的搜索界面预览:

新的搜索界面在左侧有一个搜索筛选栏,你可以用它限制搜索范围:
- Platforms (平台): 选择一个或多个平台,搜索结果仅会包含支持所选平台的 package;
- SDKs: 选择 Dart 或 Flutter 将结果限制为支持 Dart SDK 或 Flutter SDK 的 package;
- Advanced (高级选项): 额外的搜索选项,例如筛选出被标记为 Flutter Favorite 的 packages。
空安全进展
从一年前我们在 Dart 2.12 中正式发布了健全的空安全开始,社区以及 Dart 生态向空安全迁移的速度令人震撼:截止到上周,排名前 250 的 package 已经 100% 支持了空安全,排名前 1000 的 pacakge 也已经有 96% 的比例支持了空安全!谢谢所有为空安全贡献的 package 作者们!
应用迁移到空安全的迁移进度也十分乐观,这里指应用以及其所有的依赖都支持空安全。根据我们的统计,71% 的 Flutter tool 都运行在健全的空安全模式下了,如果你还没有开始,现在已经可以行动啦!
即将到来的内容
我们希望 pub.dev 的搜索界面更新对你有帮助,同时欢迎随时 提出反馈。2022 年二季度我们计划发布下一个 Dart SDK 版本,并且,我们还在跟进一些 令人兴奋的语言特性,希望能在今年晚些时候发布。
致谢
- 原文: Dart 2.16: Improved tooling and platform handling
- 链接: https://medium.com/dartlang/dart-2-16-improved-tooling-and-platform-handling-dd87abd6bad1
- 翻译 / 审校: CFUG 团队 Alex、加康、迷鹿
- 制图: Lynn
Dart 2.16 现已发布的更多相关文章
- Dart 2.15 现已发布
作者 / Michael Thomsen, Dart & Flutter Product Manager, Google 我们已经正式发布了 Dart SDK 的 2.15 版本,该版本新增了 ...
- Dart 2.13 版现已发布
作者 / Kevin Moore & Michael Thomsen Dart 2.13 版现已发布,其中新增了类型别名功能,这是目前用户呼声第二高的语言功能.Dart 2.13 还改进了 D ...
- Fuel4D 2.1 免费跨平台游戏引擎 现已发布
Fuel4D 2.1 免费跨平台游戏引擎 现已发布 开发环境:纯 C/C++,无JAVA.O-C. 支持 WIN32.安卓 系统. 详情见官方网站:http://www.fuel4d.com 或者进F ...
- Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布
Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布 来自官方日志的喜悦 被誉为全新开始的消息分析器 ...
- Tapdata 的 2.0 版 ,开源的 Live Data Platform 现已发布
https://www.bilibili.com/video/BV1tT411g7PA/?aid=470724972&cid=766317673&page=1 点击上方链接,一分钟快速 ...
- XD to Flutter 2.0 现已发布!
Flutter 是 Google 的开源 UI 工具包.利用它,只需一套代码库,就能开发出适合移动设备.桌面设备.嵌入式设备以及 web 等多个平台的精美应用.过去几年,对于想要打造多平台应用的开发者 ...
- SmartIDE v0.1.16 已经发布 - 支持阿里&蚂蚁开源的国产 IDE OpenSumi
SmartIDE v0.1.16 (Build 3137) 已经在2022年4月19日发布到稳定版通道,我们在这个版本中增加了阿里和蚂蚁发布的国产IDE OpenSumi的支持,以及其他一些改进.Sm ...
- 支持国内版Office 365的PowerShell模块现已发布
作者:陈希章 发表于2017年5月12日 上一篇文章我详细介绍了如何在PowerShell中访问到Office 365的Graph API,在文章结尾处我留了一个问题,希望有朋友可以根据那个思路,尝试 ...
- Flutter 2.2 现已发布!
在本次 Google I/O 2021 大会 上,我们正式发布了 Flutter 2.2.Flutter 2.2 是我们最新版的开源工具包,可让开发者立足单个平台构建适合任何设备的精美应用.Flutt ...
随机推荐
- Java EE数据持久化框架笔记 • 【目录】
章节 内容 实践练习 Java EE数据持久化框架作业目录(作业笔记) 第1章 Java EE数据持久化框架笔记 • [第1章 MyBatis入门] 第2章 Java EE数据持久化框架笔记 • [第 ...
- javaScript系列 [43]-TS、Class and ES5
本文讨论Typescript中的Class同ES5构造函数的对应关系,涉及TypeScript的诸多语法.构造函数.面向对象以及原型对象等相关知识点细节,本文只简单对比并不进行深入展开. TypeSc ...
- Log4j2进阶使用(更多高级特性)
1.高级进阶说明 本文介绍Log4j2高级进阶使用, 基于Log4j2进阶使用(按大小时间备份日志), 介绍更多的高级特性, 本文基于上文给出的完整log4j2.xml, 修改对应的配置项, 演示高级 ...
- 【工具】Java转换exe
一.导出jar包 eclipse中对着要转换的项目,右键,导出 搜索jar,选择jar文件,下一步 选择要输出的项目 继续下一步 选择主程序 完成 二.下载及安装exe4j,并转换jar文件为exe文 ...
- Unity——火烧+水波纹效果(噪音图)
使用噪声图实现火烧和水波纹效果: 1.溶解 关闭裁剪,根据noise纹理取样,r通道和_BurnAmount比较,裁剪掉小于_BurnAmount的片元: 通过菲尼尔得到裁剪边缘,添加火焰燃烧的颜色进 ...
- Rainbond 对接 Istio 原理讲解和代码实现分析
一.背景 现有的 ServiceMesh 框架有很多,如 Istio.linkerd等.对于用户而言,在测试环境下,需要达到的效果是快.开箱即用.但在生产环境下,可能又有熔断.延时注入等需求.那么单一 ...
- Hadoop HA(高可用) 详细安装步骤
什么是HA? HA是High Availability的简写,即高可用,指当当前工作中的机器宕机后,会自动处理这个异常,并将工作无缝地转移到其他备用机器上去,以来保证服务的高可用.(简言之,有两台机器 ...
- js 动态设置键值对数组 ,类似于 java 的Map 类型
1.前言 我想设置一个数据 var json = {a1 :1 , a2 :2 , a3 :3 .....} 这样的动态数据 ,怎么写呢? 2.正确写法 var json = []; for ...
- 大厂面试来了,欢聚时代四年多经验的Java面经
前言(也就是废话) 今年年底,额,不对,应该说是去年了,我开始进行了一个多月的面试之旅. 面试的公司并不多,但从体量上来看,基本算是一二三线的大厂都囊括了,其中还包括BAT,当然,最后我也是顺利的拿到 ...
- 使用.NET 6开发TodoList应用(31)——实现基于Github Actions和ACI的CI/CD
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求和目标 在这个系列的最后一节中,我们将使用GitHub Actions将TodoList应用部署到Azure Container ...