作者 / Patrick Sosinski & Tim Sneath

在过去的几个月中,Google Flutter 团队的工程师、产品经理、UX 研究人员、技术作者和开发者关系工程师们都遭遇了不少的挑战。和大家一样,在这特殊时期,我们也都忙于应对不同以往的日常工作。不过,Flutter 作为一个开源项目,我们能够使用各种公开可用的工具继续进行开发。在如今的形势下,我们不但需要适应新的工作环境所带来的限制和挑战,也需要照顾身边的家人。幸运的是,我们依然在不断取得进展,并推进这个春天积压下来的工作,更学会了如何身处办公室之外继续完善 Flutter!衷心希望大家也能不断进步,平安健康。

我们继续见证 Flutter 使用者的快速增长。自发布以来的 16 个月内,已有 200 万开发者使用 Flutter。即便是在如今这种前所未有的情况下,3 月份也迎来了 10% 的月度增长,现在每个月有近 50 万开发者使用 Flutter。

这里还想和大家分享几个有趣的数据:

  • 开发者使用的操作系统:

  • 开发者所在的团队:

  • 开发者使用的 Flutter 版本:

  • Flutter 使用者数量排名前五的地区是印度、中国、美国、欧盟和巴西。

  • 在 Play Store 中发布的 Flutter 应用约有 5 万个,仅在最近一个月就有近 1 万个应用上传。

  • Flutter 应用中使用最多的 framework package 是 http、shared_preferences、intl、meta、path_provider 和 pedantic。

  • Flutter 应用中使用最多的第三方 package 是 provider、rxdart、cached_network_image、sqflite、font_awesome_flutter 和 flutter_launcher_icons。

  • 您可以在这里找到以上 package

    https://pub.flutter-io.cn/packages

Flutter 在企业中的应用

Flutter 的企业用户增长迅速。我们的研究结果持续表明,跨平台构建高度品牌个性化体验的能力,是大公司选择 Flutter 的关键因素。最近的一个例子是 Nubank,它是亚洲以外最大的数字银行,拥有超过 2,000 万用户。在对各种应用开发选项进行了详细的调查和分析后,Nubank 选择了 Flutter,并在此后将其前端开发团队统一在同一个框架内,这也使得他们能在 iOS 和 Android 上同时发布新功能。

  • Nubank

    https://nubank.com.br/en/

  • Nubank 的移动架构调研报告

    https://cdn.nubank.com.br/mobile/taskforce/nubank-mobile-architecture-task-force-mission-report.pdf

请观看他们的开发者故事,了解他们如何用 Flutter 的优势改进团队开发体验以及打造跨平台优质应用:

  • 腾讯视频链接

    https://v.qq.com/x/page/k0958xo5ri3.html

  • Bilibili 视频链接

    https://www.bilibili.com/video/BV1zi4y1t77J/

企业用户普遍要求使用专业组件。我们正在与 SyncFusion 合作,他们的 Essential Studio 产品现在包含了一系列高质量的 Flutter 组件,包括图表、PDF 编辑和条码生成器等。在 2020.1 版本发布后,他们的所有组件都支持 Web、iOS 和 Android 三个平台,而且还提供了 Web 版的演示。

  • SyncFusion

    https://www.syncfusion.com/

  • 高质量 Flutter 组件

    https://www.syncfusion.com/flutter-widgets

  • 2020.1 版本

    https://www.businesswire.com/news/home/20200421005174/en/Syncfusion-Introduces-New-Flutter-Widgets-Web-Compatibility

  • Web 版演示

    https://flutter.syncfusion.com/#/

版本发布流程更新

最后,在展望下一个稳定版发布的同时,我们想分享一些对版本发布流程的改动,我们认为这些改动将进一步提高发布的稳定性和可预测性。

现在的发布流程设计比较简洁,对维护的要求也比较低。在我们团队规模还不大,框架也比较新的时候,这个流程就相当适合 Flutter,但以目前的规模而言,我们遇到了一些影响 Flutter 贡献者和开发者的问题,包括:

  • 不清楚发布版本何时构建,因此也不清楚里面包含哪些代码

  • 缺乏对分支的测试,导致发布的热修复版本出现回退

从 4 月发布的 Flutter 开始,我们将转向包含 beta 版和稳定版的分支模式,并提供稳定期。现在我们将在月初发布 beta 版分支,并拣选 (cherry-pick)* 修正关键问题来 "稳定" 这个版本。大约每一个季度,当前的 beta 版分支会被提升为稳定版。如有必要,我们将继续在这个版本上进行热修复。我们的基础设施现在支持针对分支进行测试,这意味着我们可以验证拣选修正的问题,并根据严重程度接纳一些修复请求。

* 拣选 (cherry-pick): 指从一组既定的对象中挑选出最合适/最佳的。

我们还借此机会同步了 Flutter 和 Dart 的发布流程和渠道。因此,Dart 现在也增加了一个 beta 版渠道,并将在未来与 Flutter 同步发布 (例如,Flutter 的 beta 版将包含 Dart 的 beta 版)。

  • 了解 Dart 的发布渠道

    https://dart.dev/get-dart#about-release-channels-and-version-strings

如果您已经基于稳定渠道发布了 Flutter 应用,我们鼓励您在 beta 版上测试您的应用,并在发现问题时上报,以便改善稳定版本的品质。您也可以按照 Flutter wiki 上新发布的 Flutter 拣选流程,将稳定渠道上的回退或阻塞 bug 的严重性进行升级。

  • Flutter 拣选流程

    https://github.com/flutter/flutter/wiki/Flutter-Cherrypick-Process

我们认为这个新的流程既能强化用户对发布品质和可预测性的信心,又能更容易地将热修复传递到稳定渠道。

版本命名变更

作为新的分支模式的一部分,我们对版本发布的命名方式做了一些调整。完整的技术细节可以在 Flutter wiki 上的 Flutter 构建发布渠道页面找到,其要点如下:

非稳定的发布版本将在版本字符串中用 ".pre" 表示 "预发布" 。给定一个 "x.y.z-n.m.pr" 的版本字符串,每次从 master 构建一个新的 dev 渠道版本,"n" 的数值递增。

  • 1.18.0-1.0.pre <- master 版本升至 1.18 后的第一个 dev 版本

  • 1.18.0-2.0.pre <- 从最近的 master 版本构建出的下一个 dev 版本

Beta 版将从上面的 dev 版本构建出来。当我们对其中一个版本进行拣选修正时,"m" 数值会递增。例如,如果我们将 master 的第 15 个 dev 版本作为 1.18 beta 版,那么版本编号看起来会是这样:

  • 1.18.0-15.0.pre <- 最初的 beta RC,和进入 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 构建发布渠道

    https://github.com/flutter/flutter/wiki/Flutter-build-release-channels

下一步

我们的下一个稳定版本将采用这个全新的版本模型,计划在下周发布。您可以届时再来了解有关新功能的详细内容。

在此期间,我们建议您在本文下方 "相关阅读" 中关注近期推送的 Flutter 发布内容,包括 CodePen 对 Flutter 的支持。我们非常欣赏各位创作者们制作的 "画笔" (即 CodePen 中分享的代码片段),以下是我们最喜欢的几个作品及其作者:

  • Twitter clone (mkiisoft)

    https://codepen.io/mkiisoft/pen/KKdgdad

  • Generative abstract art (rxlabz)

    https://codepen.io/rx-labz/pen/WNQoNem

  • Chakra animation (tahatesser)

    https://codepen.io/tahatesser/pen/GRpqbRY

  • Rotating carousel (joshuadeguzman)

    https://codepen.io/joshuadeguzman/pen/jObrzJB

  • Nougat animation (phillywiggins)

    https://codepen.io/phillywiggins/pen/gOaPNPY

  • Double pendulum (abhilas-csc)

    https://codepen.io/abhilas-csc/pen/qBOZKPj

如果您正在寻找 Flutter 学习资源,我们现在在网上提供免费的 Flutter 入门课程。这个由 Angela Yu 主讲的长达 10 小时的课程内含教程和代码实验室,可以助您开启 Flutter 之旅。

请您持续关注 Flutter 每周的推送更新。值此非常时期,请继续注意保持社交距离,祝大家身体健康!


推荐阅读

 点击屏末  | 访问 Flutter 开发者社区中文资源


Flutter 势头正盛 | 2020 春季速递相关推荐

  1. 「出海」势头正盛,中国车企需要更好的“全球导航”

    今年以来,中国汽车出口明显驶入快车道,包括上汽.吉利.长城.比亚迪.蔚来.小鹏等在内的主流车企纷纷加速了出海战略的实施. 中汽协最新数据显示,2022年1-9月汽车企业出口211.7万辆,同比增长55 ...

  2. Imagination官方信息速递2020年9月期

    新闻快讯 Imagination发布光线追踪等级系统 Imagination和Packetcraft宣布建立合作伙伴关系,共同推出低功耗音频解决方案  Imagination推出首门RISC-V计算机 ...

  3. DTCC 2020 | 阿里云叶正盛:数据库2025

    简介:数据库从上世纪五十年代发展至今,随着基础设施的改变,其技术也在不断演进.数据库市场也从原本商业化巨头形成的垄断地位逐渐变为云厂商处于领导地位,而未来在云上,数据库将会是兵家必争之地.与此同时,云 ...

  4. Imagination官方信息速递2020年11月期

    新闻快讯 Imagination推出多核 Series4 NNA - 终极AI加速器为ADAS和自动驾驶提供颠覆行业的性能 Imagination Technologies宣布推出面向先进驾驶辅助系统 ...

  5. 硅谷速递 | 脑机接口重现科幻电影场景?人机交互将成未来科技的关键技术?

    硅谷不仅是世界高科技中心,也是新时代的灵魂,作为全球创新的聚集地,无论是基础的技术创新,还是到下一代的技术应用创新,都有来自一批又一批的"硅谷创新".在硅谷我们不仅能看到专注于技术 ...

  6. 计划赴美IPO“黑马”极兔速递凭什么杀出重围?

    快递行业的战争从未休止. 近日,据媒体报道,印尼快递公司J&T极兔速递计划在美国进行规模超过10亿美元的IPO. 去年年初才正式入局国内市场的极兔速递到底凭什么?上市之后,在风起云涌的快递行业 ...

  7. 【一周论文速递】自然语言处理最新论文!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 自然语言处理论文速递 [1] Pretrained Transformers Im ...

  8. arXiv每日推荐-5.16:语音/音频每日论文速递

    同步公众号(arXiv每日学术速递) [1] Semi-supervised Neural Chord Estimation Based on a Variational Autoencoder wi ...

  9. “穿搭速递”首页制作

    "穿搭速递"首页制作 一.实验名称: 二.实验日期: 三.实验目的: 四.实验内容: 五.实验步骤: 六.实验结果: 七.源程序: 八.心得体会: 一.实验名称: "穿搭 ...

最新文章

  1. 如何对以破折号/连字符开头的字符串进行grep?
  2. 【LeetCode】字符串 string(共112题)
  3. Python 修改tuple元组提示:TypeError: ‘tuple‘ object does not support item assignment. 问题原因
  4. linux打开vivado_ubuntu启动vivado UBUNTU 16.04安装VIVADO成功启动SDK - Linux - 服务器之家...
  5. 腐蚀rust服务器命令_RUST++ MOD
  6. go在方法中修改结构体的值_[Go]结构体及其方法
  7. 1049. 最后一块石头的重量 II(JavaScript)
  8. 使用枚举创建枚举常量池
  9. 如何从列表中删除第一个项目?
  10. 一只青蛙跳向三个台阶_Java版剑指offer编程题第9题--变态跳台阶
  11. nginx安装nginx-vts实现监控并打包镜像
  12. 房屋出租系统java版
  13. asp.net实现一个简易购物车功能。
  14. deprecated注释 原因
  15. CISCO路由器、交换机设备破解密码
  16. 工程伦理第五章习题答案
  17. windows7现实计算机内存不足,windows7内存不足怎么办
  18. 凹凸中的相与国 ——读《大清相国》
  19. 计算机英语二国家线,2017考研英语二国家线
  20. AcrelCloud-1000变电所运维云平台在浙江固特成套设备有限公司的应用

热门文章

  1. VR游戏-云大陆 Cloudlands 2
  2. 写作始于模仿,扬名于特色,升华于思想
  3. ZBLOG打造的PHP程序系统及建站应用上的优点和缺点分析[图]
  4. Vue 基础第二次再次回顾
  5. matlab读取nastran模型,PatranNastran载荷提取方法介绍
  6. 直播的方向,别被罗永浩们带偏了
  7. 如何衡量员工的积极性以提高绩效
  8. C4D样条点插值都是些什么意思?
  9. 水果店特殊的商业模式,创造客户需求,1个月收款14万!
  10. java字符串换行拼接字符串