老孟导读:昨天期待已久的 Flutter 2.0 终于发布了,Web 端终于提正了,春季期间我发布的一篇文章,其中的一个预测就是 Web 正式发布,已经实现了,还有一个预测是:2021年将是 Flutter 大跃进的一年,等今年你年底总结的时候,让我们在来验证下这个预测是否应验。
后面几天会陆续发布 Flutter 2.0 更新更加详细的内容更新,敬请关注。
下面就让我们看看 Flutter 2.0 都有哪些重磅更新,原文链接:https://developers.googleblog.com/2021/03/announcing-flutter-2.html
我们针对Web,移动端和台式机构建的下一代Flutter
今天,我们宣布Flutter 2:Flutter的重大升级,使开发人员能够为任何平台创建美观,快速且可移植的应用程序。借助Flutter 2,您可以使用相同的代码库将本机应用程序发布到五个操作系统:iOS,Android,Windows,macOS和Linux。以及针对Chrome,Firefox,Safari或Edge等浏览器的Web体验。Flutter甚至可以嵌入到汽车,电视和智能家电中,为环境计算世界提供最普遍和最便携式的体验。
我们的目标是从根本上改变开发人员对构建应用程序的看法,而不是从您要定位的平台开始,而要从您要创建的体验开始。Flutter使您可以在品牌和设计走在前列的情况下,手工创造美好的体验。Flutter速度很快,可以将源代码编译为机器代码,但是由于我们对有状态的热重装的支持,您仍然可以提高生产力,允许您在应用程序运行时进行更改并立即查看结果。Flutter是开放的,成千上万的贡献者添加了核心框架,并通过软件包生态系统对其进行了扩展。
在今天发布的Flutter 2中,我们将Flutter从移动框架扩展到了可移植框架,释放了您的应用程序,使其可以在各种不同的平台上运行,而几乎没有改变。仅Play商店就已经有超过15万个Flutter应用程序,并且每个应用程序都可以通过Flutter 2免费升级,因为它们现在可以在不重写的情况下扩展到目标台式机和Web。
来自世界各地的客户正在使用扑,包括流行的应用程序,如微信, Grab, Yandex Go, Nubank, Sonos, Fastic, Betterment and realtor.com。在Google,我们依赖Flutter,Google的一千多名工程师正在使用Dart和Flutter构建应用程序。实际上,其中许多产品已经发货,包括Stadia,Google One和Google Nest Hub。
几个月前,Google Pay为其旗舰移动应用程序改用Flutter,他们已经在生产力和质量上取得了重大进步。通过统一代码库,该团队消除了平台之间的功能差异,并消除了超过一百万行代码。Google Pay还报告说,其工程师的效率要高得多,技术债务大大减少,统一发布流程(如跨iOS和Android的安全性审查和试验)得以实现。
Flutter on the web
Flutter 2中最大的公告也许是对Web的生产质量支持。
Web的早期基础是以document为中心的。但是,Web平台已发展为包含更丰富的平台API,这些API支持具有硬件加速的2D和3D图形以及灵活的布局和绘画API的高度复杂的应用程序。Flutter的Web支持基于这些创新,提供了以应用程序为中心的框架,该框架充分利用了现代Web所提供的所有优势。
此初始版本特别关注三种应用程序场景:
- 渐进式Web应用程序(PWA),将Web的访问范围与桌面应用程序的功能结合在一起。
- 单页应用程序(SPA),一次加载并与Internet服务之间进行数据传输。
- 将现有的Flutter移动应用程序带到Web上,从而为两种体验启用共享代码。
在过去的几个月中,在为稳定发布Web支持做准备的同时,我们在性能优化方面取得了许多进展,添加了一个新的由WebAssembly构建的由CanvasKit驱动的渲染引擎。Flutter Plasma是由社区成员Felix Blaschke构建的演示,展示了使用Dart和Flutter构建复杂的Web图形体验的简便性,这些体验也可以在桌面或移动设备上本地运行。
我们一直在扩展Flutter,以提供最佳的Web平台。最近几个月,我们添加了文本自动填充功能,对地址栏URL和路由的控制以及PWA清单。而且由于台式机浏览器与移动浏览器一样重要,因此我们添加了交互式滚动条和键盘快捷键,增加了台式机模式下的默认内容密度,并增加了屏幕阅读器对Windows,macOS和Chrome OS上可访问性的支持。
已经提供了使用Flutter构建的Web应用程序的一些示例。在教育工作者中,iRobot以其流行的Root教育机器人而闻名。Flutter对网络的生产支持使iRobot可以利用其现有的教育编程环境并将其移至网络,从而将其可用性扩展到Chromebook和其他浏览器是最佳选择的设备。iRobot的博客文章详细介绍了迄今为止的进展以及为何选择Flutter。
另一个例子是Rive,Rive为设计师提供了一个强大的工具,可用于创建可发布到任何平台的自定义动画。他们的更新后的Web应用程序现已在Beta中提供,完全由Flutter构建,并且是Flutter在此环境中可以提供的所有服务的一封情书。
您可以在我们的Medium出版物上的专用博客文章中找到有关Flutter的更多信息。
台式机,可折叠设备和嵌入式设备上的Flutter 2
除了传统的移动设备和Web之外,Flutter越来越多地扩展到其他设备类型,我们在今天的主题演讲中重点介绍了三个伙伴关系,这些伙伴关系证明了Flutter的便携性。
首先,Canonical与我们合作将Flutter带入桌面,工程师们贡献了代码来支持Linux上的开发和部署。在今天的活动中,Ubuntu团队展示了由Flutter重写的新安装程序的早期演示。对于Canonical来说,至关重要的是,它们可以在各种硬件配置上提供坚如磐石而又优美的体验。展望未来,Flutter是Canonical创建的未来台式机和移动应用程序的默认选择。
其次,微软正在继续扩大对Flutter的支持。除了正在进行的合作以在Flutter中提供高质量的Windows支持外,今天微软还将发布对Flutter引擎的支持,以支持新兴的可折叠Android设备。这些设备引入了新的设计模式,其应用程序可以扩展内容或利用双屏特性提供并行体验。在Surface工程团队的博客文章中,他们展示了他们的工作,并邀请其他人加入他们,共同完成适用于Surface Duo和其他设备的高质量实现。
最后,世界上最畅销的汽车制造商丰田汽车宣布了其计划,通过构建由Flutter提供动力的信息娱乐系统,将最佳的数字体验带入车辆。使用Flutter标志着与过去开发车载软件的方式大相径庭。丰田之所以选择Flutter,是因为其高性能和经验的一致性,快速的迭代和开发人员的人机工程学以及智能手机层的触摸机制。通过使用Flutter的embedder API,Toyota可以针对车载系统的独特需求量身定制Flutter。
我们很高兴继续与丰田和其他公司合作,将Flutter应用于汽车,电视和其他嵌入式设备,我们希望在未来几个月中分享更多示例。
不断发展的Flutter生态系统
现在,有超过15,000个Flutter和Dart软件包:来自Amazon,Microsoft,Adobe,Alibaba,eBay和Square等公司;到重要的软件包,如Lottie,Sentry和SVG,以及Flutter Favorite软件包,如sign_in_with_apple,google_fonts,geolocator和sqflite。
今天,我们宣布推出Google移动广告Flutter的测试版,这是一个可与AdMob和AdManager配合使用的新SDK,可提供多种广告格式,包括横幅广告,插页式广告,原生广告和奖励视频广告。我们一直在与几个主要客户一起试用该SDK,例如SuaMúsica(拉丁美洲最大的独立艺术家音乐平台),现在我们准备开放Google移动广告Flutter SDK以便更广泛地采用。
我们还将宣布对Flutter插件的一些核心Firebase服务进行更新:身份验证,Cloud Firestore,Cloud Functions,Cloud Messaging,Cloud Storage和Crashlytics,包括对可靠的null安全性的支持以及对Cloud Messaging软件包的全面检查。
Dart:Flutter背后的秘密调味料
正如我们已经指出的,Flutter 2可移植到许多不同的平台和外形上。轻松过渡到支持Web,桌面和嵌入式的过程很大程度上要归功于Dart,它是针对多平台开发进行了优化的Google编程语言。
Dart结合了一套独特的功能来构建应用程序:
- 无意外的可移植性,其编译器可为移动和台式机生成高性能的Intel和ARM机器代码,并为网络提供经过严格优化的JavaScript输出。相同的Flutter框架源代码可编译到所有这些目标。
- 在桌面和移动设备上进行有状态热重载的迭代开发,以及为现代UI编程的异步,并发模式设计的语言构造。
- 在所有这些平台上的Google级性能,可靠的null安全性保证了运行时和开发过程中的null约束。
没有其他语言可以结合所有这些功能。也许这就是为什么Dart是GitHub上发展最快的语言之一的原因。
Dart 2.12现已发布,是我们自2.0版以来最大的发行版,支持null安全性。可靠的null安全性有可能消除可怕的null引用异常,从而在开发和运行时提供了保证,即如果开发人员明确选择,则类型只能包含null值。最重要的是,此功能不是一项重大更改:您可以按照自己的步调将其逐步添加到代码中,并可以使用迁移工具在准备就绪时为您提供帮助。
今天的更新还包括FFI的稳定实现,使您可以编写可与基于C的API互操作的高性能代码。用Flutter编写的新的集成开发人员和分析器工具;以及许多性能和大小上的改进,这些改进可以进一步升级代码,而无需重新编译即可。有关更多信息,请查看专用的Dart 2.12公告博客文章。
Flutter 2:现已发布
关于Flutter 2,要说的话远远超出了我们在本文中可以涵盖的范围。实际上,合并的合并请求的原始列表是一个200页的文档!请访问Flutter 2上的独立技术博客,以获取有关许多新功能和性能改进的信息,我们认为这将使现有的Flutter开发人员满意,并立即下载。
我们还有一个主要的新样本,它展示了刚才提到的所有内容,该样本是与位于加拿大埃德蒙顿的屡获殊荣的设计团队gskinner合作构建的。Flutter Folio是一款剪贴簿应用程序,专为您的所有设备而设计。小屏幕体验是专为捕获内容而设计的;大屏幕支持使用台式机和平板电脑专用的习惯用法进行编辑;网络体验是为共享而量身定制的。所有这些量身定制的经验都共享相同的代码库,该代码库是开源的,可供您阅读。
如果您还没有尝试过Flutter,我们认为您会发现它对您的应用程序开发体验而言是一次重大升级。在Flutter中,我们提供了一个开放源代码工具包,用于通过单个代码库构建针对移动,台式机,Web和嵌入式设备的美观而快速的应用程序,这些应用程序既可以满足Google的苛刻需求,也可以满足我们客户的需求。
Flutter是免费的开放源代码。我们很高兴看到您使用Flutter 2构建的东西!
交流
博客中领取 《330个控件大全》和 《Flutter 实战》PDF。地址:http://laomengit.com