乐趣区

关于flutter:Dart-216-现已发布

文 / Michael Thomsen, Dart 产品经理

Dart 2.16 正式公布

Dart 2.16 正式版已于上周公布。只管没有新的语言个性退出,但本次版本公布蕴含了数个问题修复 (包含对安全漏洞的修复),公布 Dart package 的时候也能够指定反对的平台,pub.dev 网站也更新了全新的搜寻界面。

与 Flutter 2.10 一起公布的 Dart 2.16,依然在将旧的命令行工具迁徙到新的 dart 命令行工具。这个版本中,dartdocdartanalyzer 已被弃用,别离对应新的命令是 dart docdart analyzedartdocdartanalyzerpub 这三个命令打算在 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 当初能够设置 authroizationwww-authenticatecookiecookie2 这些申请头信息。在 Dart 2.16 之前,SDK 中重定向逻辑的实现有一个破绽,当跨域重定向产生时,这些申请头 (可能蕴含敏感信息) 会被发送,在 Dart 2.16 中这些申请头已被移除,你能够浏览 CVE-2022–0451 理解更多细节。
  • dart:io中的 Directory.rename API 调整了在 Windows 平台上的行为:与指标名称统一的目录不会被删除 (issue #47653)。
  • 在 Dart 1.x 中遗留的 Platform.packageRootIsolate.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
退出移动版