企业的一项常见需求是专业组件。谷歌与 SyncFusion 展开了合作,后者的 Essential Studio 产品现在包含了一系列高质量的 Flutter 组件,包括图表、PDF 操作和条形码生成等。在他们的 2020.1 版本中,所有组件均直接支持 Android、iOS 和 Web 平台,并且具有基于 Web 的控件预览:
https://flutter.syncfusion.com/#/
更新版本发布流程
在谷歌开发新的 Flutter 稳定版本时,他们对原有的发布模型做出了一些更改,以进一步提高发布的稳定性和可预测性。
谷歌原来的发布流程的设计目标是简洁和低维护成本。但随着开发团队的规模不断增大,谷歌遇到了一些会影响到 Flutter 贡献者和开发人员的问题,具体包括:
- 不清楚何时发布什么版本,以及其中包含什么样的代码;
- 缺乏对分支的测试,结果要重复发布修复程序。
从 4 月的 Flutter 版本开始,谷歌将转向一个 beta 和稳定版本固定间隔发布的分支模型。现在谷歌将在每月初发布 beta 版,然后精选(cherrypick)出重要的补丁来稳定该版本。大约每季度一次,当前的 beta 分支将升级到稳定版本。如有必要,谷歌将继续修复此版本。现在谷歌的基础架构支持针对分支的测试,这样就能验证那些精选补丁,并根据严重性的水平接受某些请求。
谷歌还借此机会调整了 Flutter 和 Dart 的发行流程和渠道。Dart 添加了一个 beta 通道,并且之后它们发布的版本将被同步(例如,Flutter beta 版本将包含一个 Dart beta 版本)。
如果用户已经在基于稳定通道发布 Flutter 应用,谷歌建议用户在 beta 候选版本中测试应用,并报告所遇到的任何问题,帮助提升稳定版本的质量。你还可以根据 Flutter Wiki 上新的 Flutter 精选流程的指引,在稳定通道上升级回归或阻止 bug:
https://github.com/flutter/flutter/wiki/Flutter-Cherrypick-Process
这一新流程将为 Flutter 的发行版带来更高的质量和更好的可预测性,并为将稳定补丁发布到稳定的通道提供更简便的方法。
版本控制更改
作为这一分支模型的一部分,谷歌还对版本的控制方式做了一些小的更改。
完整的技术细节在 Flutter 构建发布通道 Wiki 页面上可见:
https://github.com/flutter/flutter/wiki/Flutter-build-release-channels
简单总结如下:
非稳定发行版将在版本字符串中以.pre 注释,以表示其预发布状态。给定一个 x.y.z-n.m.pre 的版本字符串,每当从 master 生成一个新构建时,dev 通道构建将增加 n。
- 1.18.0–1.0.pre:master 版本移至 1.18 之后的第一个 dev 构建
- 1.18.0–2.0.pre:从 master 的最新发布点出发的下一个 dev 构建
如上所述,谷歌将从 dev 版本发布点构建 beta 版本。在某个发行版上精选补丁时,m 版本号将会增加。例如,master 的第 15 个 dev 构建作为 beta 的 1.18 版本,则版本控制如下所示:
- 1.18.0–15.0.pre:初始 beta 候选版(与 dev 发行版相同)
- 1.18.0–15.1.pre:在(现在的)beta 分支上的后续构建,带有一些精选补丁
- 1.18.0–15.2.pre:第二个后续构建
稳定版的版本号将为 x.y.0。如果有必要,后续的修补程序版本将增加补丁号:x.y.1,x.y.2,以此类推。
- 1.18.0–15.4.pre:分支上的最新 beta 构建
- 1.18.0:稳定版本,与 1.18.0–15.4-pre 相同
- 1.18.1:潜在的 1.18.0 修补程序
下一步进展计划
谷歌使用这个全新的版本控制模型发布的第一个版本,将是 Flutter 的下一个稳定版本,计划在本周发布。所有新功能的完整摘要将在不久后给出具体介绍。
还可以查看谷歌在过去几周内发布的其他一些公告。上上周,谷歌宣布了 CodePen 对 Flutter 的支持:
https://medium.com/flutter/announcing-codepen-support-for-flutter-bb346406fe50
过去几天里许多创作者制作了各种笔刷。以下是一些示例:
Twitter clone:
https://codepen.io/mkiisoft/pen/KKdgdad
Generative abstract art:
https://codepen.io/rx-labz/pen/WNQoNem
Chakra animation:
https://codepen.io/tahatesser/pen/GRpqbRY
Rotating carousel:
https://codepen.io/joshuadeguzman/pen/jObrzJB
Nougat animation:
https://codepen.io/phillywiggins/pen/gOaPNPY
Double pendulum:
https://codepen.io/abhilas-csc/pen/qBOZKPj