Contents

Dart 2 migration guide

Dart 2与早期版本的Dart有一些主要区别. 该页面简要介绍了这些差异,并提供了有关将代码迁移到Dart 2的一般建议.

有关Dart 2 为何更改的信息,请参阅Dart 2公告.

Differences

Dart语言,库,构建系统和Web开发工具已更改.

Language and libraries

Tools

Migrating your code

如何迁移代码取决于代码的年代和运行的平台. 有关迁移Web应用程序的帮助,请参阅Web App迁移指南. 如果要迁移Flutter应用,请查阅重大变更通知. 如果您发布软件包,则除了进行特定于平台的更改外,还请遵循下面软件包迁移说明 .

General process

这是从Dart 1.x或更早版本的Dart 2迁移到Dart 2的过程的概述.

  1. 获取Flutter或Dart SDK的最新版本以及您使用的任何IDE的插件.
  2. 升级您的应用程序所依赖的软件包.
  3. 运行dart2_fix工具. 它有助于将不赞成使用的Dart 1.x API的某些使用迁移到Dart 2.
  4. 运行分析器以查找编译时错误和弃用提示.
  5. 修复代码中的问题,然后再次运行分析器 ,重复执行直到代码通过静态分析为止.
  6. 运行测试以查找运行时错误 .
    • 对您的软件运行所有自动化测试 .
    • 进行手动测试,并查找控制台错误. 考虑添加自动测试以发现您发现的问题.
  7. 修复问题,直到您的代码正常工作.
  8. Optional: 删除new不必要的const .
    • 您可以手动删除它们,也可以使用dartfmt --fix类的工具删除它们.
    • 要查找的出现new和不必要的const ,添加规则unnecessary_newunnecessary_constlinter你的部分分析选项文件 .

Migrating packages

作为包所有者,您需要执行以下操作:

  • 请遵循您的软件包支持的平台的迁移技巧(请参阅上文 ).
  • 确保您的软件包通过了Dart 2分析(请参阅上面的运行分析器
  • 确保您软件包的用户知道如何报告问题.
  • 快速响应以发布报告.
  • 如果代码更改不向后兼容,请更新较低的SDK约束.

Changes and backward compatibility

如果必须更改软件包的代码,请尝试使其在1.x和Dart 2中都可以使用.例如,您可以添加类型注释或(如果已删除API)使用替代方法1 .x API.

如果无法向后兼容更改,请更新较低的SDK约束.

测试您的更改 ,以确保您的程序包按预期工作.

Upper constraints on the SDK version

您的软件包通过Dart 2分析后,更新上限,以声明该软件包与Dart 2兼容:

environment:
  # Works in Dart 2 only.
  sdk: '>=2.0.0 <3.0.0'

如果您打算保持与旧版Dart的兼容性,请相应地调整较低的SDK约束:

environment:
  # Works in Dart 1 (starting with 1.20.1), and works in Dart 2.
  sdk: '>=1.20.1 <3.0.0'

如果使用2.0以后引入的功能,请确保指定正确的较低SDK约束:

environment:
  # Works in 2.1 but not 2.0.
  sdk: '>=2.1.0 <3.0.0'

More resources

by  ICOPY.SITE