目录
- Flutter 2的发布
- Flutter 2的背后
- Flutter 2对Web的支持
- Flutter 2对PC、可折叠以及嵌入式设备的支持
- 不断发展的Flutter生态系统
- 空安全
Flutter 2概述
谷歌在今日召开的一场线上活动中正式宣布了Flutter 2的发布。作为一款用于构建跨平台APP的框架,Flutter今天正式迎来了它的的第二个大版本,增加了对桌面和Web 应用程序的支持。开发者可借助 Flutter2打造开箱即用的APP,并且能够为 iOS、Android、Windows、macOS、Linux 和 Web 端套用相同的代码。
谷歌表示,开发者借助 Flutter 2 可使用同一份代码库面向 5 个操作系统(iOS, Android, Windows, macOS 和 Linux)发布原生应用,以及发布面向 Chrome, Firefox, Safari 和 Edge 等浏览器的应用。此外,Flutter 还可以嵌入到汽车、电视和智能家电中。
之所以叫Flutter2,主要归结于其对Web和桌面应用程序的支持。这是一个可以作为相当深远的支点,相信在不远的某一天Flutter将一统全栈。
Flutter的目标是从根本上改变开发人员对构建应用程序的思路,让开发者从用户体验,而不是适配的平台开始。
全球各大一二线公司都已经使用了 Flutter,包括它们的主流的应用程序如:微信,Grab,Yandex Go,Nubank,Sonos ,Fastic,Betterment 和 realtor.com等。
在 Google 内部也会使用 Flutter 开发,Google 内有近一千多名工程师正在使用 Dart 和Flutter 构建应用程序,其中许多产品都已经发布了,包括:Stadia,Google One和Google Nest Hub 等等。
几个月前,Google Pay为其旗舰移动应用程序改用Flutter,他们已经在生产力和质量上取得了重大进步。通过统一代码库,该团队消除了平台之间的功能差异,并消除了超过一百万行代码。Google Pay还报告说,其工程师的效率要高得多,技术债务大大减少,统一发布流程(如跨iOS和Android的安全性审查和试验)得以实现。
Flutter 2 的背后
距离Flutter 1.0的发布已经两年多了,在这段时间内Flutter已经关闭了24541个issues,并合并了来自765个贡献者的17039个PR。自去年9月Flutter 1.22发布以来,陆续已经关闭了5807个issues并合并了298位贡献者的4091个PR。特别感谢我们的志愿者捐助者,他们慷慨地抽出时间来改进Flutter项目。为Flutter 2发布贡献最大的一位顶部志愿者是来自中国成都的xu-baolin,它提交了46个PR
。另外,除了PR的贡献者之外还有一大批志愿者PR评审人员,评审了1525个PR,包括hamdikahloun
,CareF
和YazeedAlKhalaf
。Flutter确实是社区的一项工作,如果没有问题提出者,PR贡献者和代码审查者,就不可能有Flutter 2。
Flutter 2对Web的支持
Flutter 2中最大变更之一就是对Web的生产质量有了新的支持。
Flutter对Web的支持是基于有硬件加速的2D和3D图形以及灵活的布局和绘画API,提供了以应用程序为中心的框架,该框架充分利用了现代Web所提供的所有优势。
Tips:Flutter团队中有不少是开发Chrome浏览器的开发人员。
此初始版本特别关注三种应用程序场景:
- 渐进式Web应用程序(PWA):将Web的访问范围与桌面应用程序的功能结合在一起。
- 单页应用程序(SPA),一次加载并与网络之间进行数据传输。
- 将现有的 Flutter 移动应用程序带到Web上,从而为两种体验启用共享代码。
Flutter开发团队表示,Flutter 2 有意为 Web 平台提供了非常标准的、以 DOM 为中心的开发方式。尽管效果不错,这么做也可能带来性能方面的阻碍(尤其是更高级的功能)。
在过去的几个月中,在为稳定发布 Web 支持做准备的同时,Flutter也在性能优化方面取得了许多进展,比如添加了一个由 WebAssembly
构建的 CanvasKit
驱动渲染引擎。
Flutter Plasma 是由社区成员 Felix Blaschke 构建的 Demo ,展示了使用 Dart 和 Flutter 构建复杂的 Web 图形体验的简便性,这些体验也可以在桌面或移动设备上本地运行。
此外Google也一直在扩展Flutter使其能够提供最佳的Web平台。最近几个月,Flutter 添加了文本自动填充功能,对地址栏 URL 和路由的控制 和 PWA清单。而且由于PC浏览器与移动浏览器一样重要,因此我们添加了交互式滚动条和键盘快捷键,增加了PC模式下的默认内容密度,并增加了屏幕阅读器对Windows,macOS和Chrome OS上可访问性的支持。
Tips:Flutter对桌面应用程序支持仍处于相对早期的阶段,但 Web 支持已经从 Beta 测试顺利转正。
Flutter 2对PC、可折叠以及嵌入式设备的支持
这次发布会上Flutter还介绍了Flutter生态中的小伙伴:Canonical、微软、丰田:
-
Canonical 与Google合作将 Flutter 带入 desktop ,开发者贡献了许多代码来支持在Linux 上的开发和部署Flutter;展望未来Flutter是 Canonical 创建的未来 desktop 和移动应用程序的默认选择;
-
微软正在继续扩大对 Flutter 的支持,除了对 Flutter 提供高质量的 Windows 支持外,今天微软还将发布对 Flutter 引擎以支持新兴的可折叠 Android 设备的支持。
-
这些设备引入了新的设计模式,其应用程序可以扩展内容或利用双屏特性提供并行体验。
-
-
汽车制造商丰田汽车宣布通过 Flutter构建其信息娱乐系统,将最佳的数字体验带入车辆。
- 使用 Flutter 标志着与过去开发车载软件的方式大相径庭,丰田之所以选择 Flutter 是因为其高性能和经验的一致性,快速的迭代和开发人员的人机工程学以及智能手机层的触摸机制,通过使用 Flutter 的 embedder API,Toyota 可以针对车载系统的独特需求量身定制Flutter。
不断发展的Flutter生态系统
截至目前Flutter生态中已迎来包括亚马逊、微软、Adobe、华为、阿里巴巴、腾讯、eBay、Square 等公司贡献的超过 1.5 万个 Flutter / Dart 软件包。关键包支持如:Lottie
,Sentry
和 SVG,以及 Flutter Favorite 软件包如: sign_in_with_apple
,google_fonts
,geolocator
和 sqflite
等。
最后,跟小伙伴们聊一聊此次Flutter版本的发布对大家影响最大的一个功能:空安全。
空安全
空安全性是Dart语言的重要补充,它通过区分可空类型和非可空类型进一步增强了类型系统。这使开发人员能够防止null错误崩溃,这是应用程序崩溃的常见原因。通过将空检查合并到类型系统中,可以在开发过程中捕获这些错误,从而防止生产崩溃。从Flutter 2开始,包含Dart 2.12的稳定版完全支持声音无效安全性。
pub.dev软件包存储库已经发布了1000多个空安全软件包,其中包括Dart,Flutter,Firebase和Material团队的数百个软件包。
由于Flutter 2基于Dart的空安全版本,这会导致pub.dev上一大批没有适配空安全的插件出现无法运行在Flutter 2上,所以:如果你想将已有已有升级到Flutter 2那么首先需要确保项目中所依赖的插件是否有对应的空安全的版本,如果你是Flutter包的开发者,那么请尽快将你的包迁移到支持空安全的Dart版本。