谷歌今天宣布推出 Flutter 2,距离 Flutter 1.0 的发布才过去两年多,在这不算长的时间里,Flutter 团队处理了 24541 个 issue,合并了 17039 个 PR。这里值得一提的是,Flutter 团队特别感谢了以志愿者身份为 Flutter 提交 PR 的 contributor,他们都奉献了自己的业余时间来改进 Flutter。其中在 Flutter 2 开发期间最积极的一名 contributor 是来自中国成都的开发者 xu-baolin,其 GitHub 主页显示他就职于 OPPO,他的贡献主要是为 Flutter 引入空类型安全 (null safety)。

下面介绍 Flutter 2 值得关注的新特性。

桌面

Flutter 对桌面的 stable 支持尚处于早期阶段,因此可以认为 Flutter 的桌面支持仍是 beta 支持,Flutter 团队预计今年晚些时候提供 stable 支持。

主要改进的地方是针对桌面使用场景添加了许多小部件,使得某些特定于桌面的功能和交互更符合常见的使用体验。

以及支持更直观的 IME 输入。

iOS

Flutter 表示,由于此前专注于提升对其他平台的支持质量,所以会让别人误以为放弃了 iOS,事实并非如此,他们强调 iOS 仍是 Flutter 主要支持的平台,并会继续努力带来重要的新功能和性能改进。

Flutter 2 合并了 178 个与 iOS 相关的 PR,其中包括无需打开 Xcode 即可直接从命令行构建 IPA 文件。

新增的 CupertinoFormSectionCupertinoFormRow 和 CupertinoTextFormFieldRow 小组件帮助开发者更轻松构建具有 iOS 美学风格的验证表单。

Android Studio/IntelliJ 扩展

IntelliJ 系列 IDE 的 Flutter 插件新增了许多面向 Flutter 2 的新功能,例如创建项目时的项目引导,其风格与 IntelliJ 的保持一致。

Visual Studio Code 扩展

Visual Studio Code 的 Flutter 插件也针对 Flutter 2 进行了改进,例如重新运行刚刚失败的测试。

此外,经过两年的开发,Dart 的 LSP(语言服务器协议)支持现已推出,并作为默认的方式提供给 Dart 分析器,以集成到 Visual Studio Code 的 Flutter 插件中。LSP 的支持在多个方面改进了 Flutter 的开发体验,包括支持在当前 Dart 文件中应用某种类型的所有修复程序,并使代码补全功能生成完整的函数调用,包括括号和所需参数。