【老孟Flutter】Flutter 2.0 重磅更新
老孟导读:昨天期待已久的 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构建的东西!
交流
老孟Flutter博客(330个控件用法+实战入门系列文章):http://laomengit.com
添加微信或者公众号领取 《330个控件大全》和 《Flutter 实战》PDF。
欢迎加入Flutter交流群(微信:laomengit)、关注公众号【老孟Flutter】:
![]() |
![]() |
【老孟Flutter】Flutter 2.0 重磅更新的更多相关文章
- 【老孟Flutter】2021 年 Flutter 官方路线图
老孟导读:这是官方公布的2021年路线图,向我们展示了2021年 Flutter 的主要工作及计划. 原文地址:https://github.com/flutter/flutter/wiki/Road ...
- 【老孟Flutter】源码分析系列之InheritedWidget
老孟导读:这是2021年源码系列的第一篇文章,其实源码系列的文章不是特别受欢迎,一个原因是原理性的知识非常枯燥,我自己看源码的时候特别有感触,二是想把源码分析讲的通俗易懂非常困难,自己明白 和 让别人 ...
- 【老孟Flutter】Flutter 2的新功能
老孟导读:昨天期待已久的 Flutter 2.0 终于发布了, Flutter Web和Null安全性趋于稳定,Flutter桌面安全性逐渐转向Beta版! 原文链接:https://medium.c ...
- 【老孟Flutter】41个酷炫的 Loading 组件库
老孟导读:目前 loading 库中包含41个动画组件,还会继续添加,同时也欢迎大家提交自己的 loading 动画组件或者直接微信发给我也可以. Github 地址:https://github.c ...
- 【老孟Flutter】2020年总结
2020年是我经历的最不平凡的一年,这一年有遗憾.有收获,有感概,也有庆幸,庆幸自己还活着. 用一句话总结自己的2020,忙并收获着,累并快乐着. <Flutter 实战入门> <F ...
- 【老孟Flutter】Stateful 组件的生命周期
老孟导读:关于生命周期的文章共有2篇,第一篇是介绍 Flutter 中Stateful 组件的生命周期. 博客地址:http://laomengit.com/blog/20201227/Statefu ...
- 【老孟Flutter】为什么 build 方法放在 State 中而不是在 StatefulWidget 中
老孟导读:此篇文章是生命周期相关文章的番外篇,在查看源码的过程中发现了这一有趣的问题,欢迎大家一起探讨. Flutter 中Stateful 组件的生命周期:http://laomengit.com/ ...
- 【老孟Flutter】如何提高Flutter应用程序的性能
首先 Flutter 是一个非常高性能的框架,因此大多时候不需要开发者做出特殊的处理,只需要避免常见的性能问题即可获得高性能的应用程序. 重建最小化原则 在调用 setState() 方法重建组件时, ...
- 【老孟Flutter】6种极大提升Flutter开发效率的工具包
老孟导读:本文介绍6种极大提升Flutter开发效率的工具包. [1] 强大的日志软件包 在开发 Flutter 的过程中打印日志是常用的调试方式之一,但 Flutter 内置的日志打印非常简单,下面 ...
随机推荐
- 【noi 2.6_9271】奶牛散步(DP)
这题与前面的"踩方格"重复了,而且是大坑题!题目漏写了取模12345的条件! 详细解析请见我之前的博文--http://www.cnblogs.com/konjak/p/59368 ...
- Linux-进程管理命令
目录 进程管理命令-ps(静态) 进程管理命令-top(动态) 什么是中断 管理进程状态 kill命令 killall命令 pkill命令 pidof 和 pgrep 补充 关于优先级PR和NI 后台 ...
- GO - 高级编程
https://books.studygolang.com/gopl-zh/ https://chai2010.cn/advanced-go-programming-book/
- HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)题解
题意:从 1 走到 n,要求所走路径不能出现给定的路径,求最短路 思路:因为要求不能出现给定路径,那么我可以求助ac自动机完成判断. 我们可以在build的时候标记哪些路径不能出现,显然下面这种表示后 ...
- 使用nodejs爬取图片
在运行代码前,请确保本机是否有nodejs环境 1 D:\ > node -v 2 v12.1.0 //版本号 需要用到的包 axios //请求页面 cheerio // 把get请求的页面 ...
- java变量、数据类型、运算符
关键字.保留字.标识符 关键字 Java关键字是对Java编译器有特殊含义的字符串,是编译器和程序员的一个约定,程序员利用关键字来告诉编译器其声明的变量类型.类.方法特性等信息 保留字 goto.co ...
- CDN 工作原理剖析
CDN 工作原理剖析 CDN / Content Delivery Network / 内容分发网络 https://www.cloudflare.com/zh-cn/learning/cdn/wha ...
- pull down/pull up refresh & UI Components
pull down/pull up refresh & UI Components 下拉/上拉刷新 https://mint-ui.github.io/docs/#/zh-cn2/loadmo ...
- JavaScript Semicolon Insertion
JavaScript Semicolon Insertion https://blog.izs.me/2010/12/an-open-letter-to-javascript-leaders-rega ...
- js 拖拽排序
See alsoe: https://www.runoob.com/html/html5-draganddrop.html https://developer.mozilla.org/zh-CN/do ...