Flutter 2.0 正式版发布,全平台 Stable_Android技术之家的博客-程序员秘密

技术标签: python  java  编程语言  人工智能  嵌入式  

针对 Web,Mobile 和 Desktop 的下一代 Flutter 。

      今天 Flutter 2 正式版发布了,作为 Flutter 的重大升级,使用 Flutter 2 开发者可以用相同的代码,把使用 Flutter 开发的应用发布到五个操作系统:iOSAndroidWindowsmacOSLinux;以及运行到 ChromeFirefoSafariEdge等浏览器的 Web 版本上,Flutter 甚至还可以嵌入到 Cars, TVs 和智能家电中。

       Flutter 的目标是从根本上改变开发人员对构建应用程序的思路,让开发者从需要完成的用户需求开始实现,而不是从开发者需要适配的平台开始

       Flutter 可以让你在拥有更好设计效果的情况下,得到更好的用户体验,因为它的运行速度很快,它会将源代码编译为机器代码,但是 Flutter 在开发过程中支持的 hotload,所以也可以在应用程序调试运行时进行更改并立即查看结果。

        最后,Flutter 是开放的,已经有成千上万的开发者成为了它的贡献者,并通过各种 packages 对其进行了扩展。

       在今天发布的 Flutter 2 中,Flutter 正式将从移动框架扩展到了全平台框架,使用 Flutter 2 开发者可以让它的应用直接运用到各种不同的平台而几乎不需要做出什么改变。

       现在仅 Play 商店就已经有超过 15万个Flutter 应用程序,并且每个应用程序都可以通过 Flutter 2 进行免升级,因为它们现在可以在不重写的情况下扩展到 DesktopWeb

PS: 个人认为这个的是可行性太低了,纯属吹水。

        全 球各大主流企业都已经使用了 Flutter,包括它们的主流的应用程序如:微信GrabYandex GoNubankSonosFasticBettermentrealtor.com等。

        在 Google 内部也会使用 Flutter 开发,Google 内有近一千多名工程师正在使用 Dart 和Flutter 构建应用程序,其中许多产品都已经发布了,包括:StadiaGoogle OneGoogle Nest Hub 等等。

       在几个月前, Google Pay 里的旗舰移动应用就有不少更改为使用 Flutter,它们已经在生产力和质量上取得了重大进步。通过统一的代码库,团队消除了平台之间的功能差异,并清理超过一百万行代码,Google Pay 的报告还提到其工程师的效率要高得多,技术债务大大减少,统一的发布流程(如跨 iOS 和 Android 的安全性审查和试验)得以实现。

Flutter on the web

Flutter 2 中最大的修改之一就是对Web的生产质量有了新的支持。

     Flutter 的Web 支持基于有硬件加速的2D和3D图形以及灵活的布局和绘画API,提供了以应用程序为中心的框架,该框架充分利用了现代Web所提供的所有优势。

此初始版本特别关注三种应用程序场景:

  • 渐进式Web应用程序(PWA):将Web的访问范围与桌面应用程序的功能结合在一起。

  • 单页应用程序(SPA),一次加载并与网络之间进行数据传输。

  • 将现有的 Flutter 移动应用程序带到Web上,从而为两种体验启用共享代码。

      在过去的几个月中,在为稳定发布 Web 支持做准备的同时,也在性能优化方面取得了许多进展,比如添加了一个由 WebAssembly 构建的 CanvasKit 驱动渲染引擎。

       Flutter Plasma 是由社区成员 Felix Blaschke 构建的 Demo ,展示了使用 Dart 和 Flutter 构建复杂的 Web 图形体验的简便性,这些体验也可以在桌面或移动设备上本地运行。

      此外我们也一直在扩展 Flutter 以提供最佳的Web平台。最近几个月,Flutter 添加了文本自动填充功能,对地址栏 URL 和路由的控制 和 PWA manifests,而且由于 desktop browsers 与移动浏览器一样重要,因此我们还添加了交互式滚动条和键盘快捷键,以此来增加了 desktop 下的默认内容的紧密程度,并增加了屏幕阅读对 Windows,macOS 和Chrome OS 上可访问支持。

desktops, foldables, and embedded devices

除了传统的移动设备和 Web 之外,Flutter 被越来越多地扩展到其他设备类型,今天的主题演重点介绍了三个伙伴关系,这些伙伴关系证明了 Flutter 的可移植能力。

首先 Canonical 与我们合作将 Flutter 带入 desktop ,开发者贡献了许多代码来支持Linux 上的开发和部署。

在今天的活动中,,Ubuntu 团队展示了由 Flutter 重写的早期新安装程序的演示,这对于Canonical 来说,它们可以在各种硬件配置上提供稳定而又优美的体验,而展望未来,Flutter是 Canonical 创建的未来 desktop 和移动应用程序的默认选择。

       其次微软正在继续扩大对 Flutter 的支持,除了对 Flutter 提供高质量的 Windows 支持外,今天微软还将发布对 Flutter 引擎以支持新兴的可折叠 Android 设备的支持。这些设备引入了新的设计模式,其应用程序可以扩展内容或利用双屏特性提供并行体验。在 Surface 工程团队的博客文章中展示了他们的成功。

       最后是汽车制造商丰田汽车宣布了其计划:通过 Flutter  构建其信息娱乐系统,将最佳的数字体验带入车辆。

       使用 Flutter 标志着与过去开发车载软件的方式大相径庭,丰田之所以选择 Flutter 是因为其高性能和经验的一致性,快速的迭代和开发人员的人机工程学以及智能手机层的触摸机制,通过使用 Flutter 的 embedder API,Toyota 可以针对车载系统的独特需求量身定制Flutter。

       我们很高兴继续与丰田和其他公司合作,将 Flutter 应用于汽车,电视和其他嵌入式设备,我们希望在未来几个月中分享更多示例。

不断发展的Flutter生态系统

    现在,有超过 15,000 个 Flutter 和 Dart 软件包:来自 AmazonMicrosoftAdobeAlibabaeBaySquare 等公司;关键包支持如:LottieSentrySVG,以及 Flutter Favorite 软件包如: sign_in_with_applegoogle_fontsgeolocatorsqflite 等。

今天,我们宣布推出 Google 移动广告 Flutter 的测试版,这是一个可与 AdMob 和AdManager 配合使用的新 SDK,可提供多种广告格式,包括横幅广告,插页式广告,原生广告和奖励视频广告。

        我们一直在与几个主要客户一起试用该 SDK,例如 SuaMúsica(拉丁美洲最大的独立艺术家音乐平台),现在我们准备开放 Google 移动广告 Flutter SDK 以便它能够被更广泛地采用。

     这里还将宣布对Flutter插件的一些核心 Firebase 服务进行更新:AuthenticationCloud FirestoreCloud FunctionsCloud MessagingCloud StorageCrashlytics,包括对可靠的 null 安全性的支持以及对 Cloud Messaging 软件包的全面检查。

Dart: The secret sauce behind Flutter

       正如前面描述的,Flutter 2 可移植到许多不同的平台和设备上,并且轻松过渡到支持 Web,桌面和嵌入式平台,这个过程很大程度上要归功于 Dart,它是针对多平台开发进行了优化的Google 编程语言。

Dart 结合了一套独特的功能来构建应用程序:

  • 毫无争议的可移植性,其编译器成为 Mobile 和 Desktop 上高性能的Intel和ARM机器代码,并为 Web 提供经过严格优化的 JavaScript 输出,相同的 Flutter 框架源代码可编译到所有这些目标。

  • 在桌面和移动设备上进行有状态热重载的迭代开发,其优秀的异步,并发模式设计的语言构造。

  • 在所有这些平台上拥有 Google 级性能,可靠的 null 安全性保证了运行时和开发过程中的null约束。

没有其他语言可以结合所有这些功能。也许这就是为什么 Dart 是GitHub上发展最快的语言之一的原因。

PS:我觉得这纯属吹水引战。

     Dart 2.12 现已上市,是我们自 2.0 版以来最大的发布版本,支持 null safety。可靠的null 安全性可以消除可怕的 null 引用异常,从而在开发和运行时提供了保证。最重要的是,此功能不是一项重大更改:开发者可以按照自己的步调将其逐步添加到代码中,并可以使用迁移工具在准备就绪时再使用。

今天的更新还包括 FFI 的稳定实现,开发者可以编写基于 C 的 API 高性能代码和 Flutter 交互,用 Flutter 编写新的集成开发人员分析器工具,以及许多性能和大小上的改进,这些改进可以进一步升级代码,而无需重新编译。有关更多信息,请查看专用的Dart 2.12公告博客文章。

Flutter 2: Available now

关于 Flutter 2,要说的话远远超出了在本文中可以涵盖的范围。

实际上,合并的 PR 原始列表是一个200页的文档!请访问 Flutter 2 相关的独立技术博客,以获取有关许多新功能和性能改进的信息。

       我们还有一个主要的 Demo,它展示了刚才前面提到的所有内容,该样本是与位于加拿大埃德蒙顿的屡获殊荣的设计团队 gskinner 合作构建的。Flutter Folio 是一款剪贴簿应用程序,专为所有设备而设计。

       小屏幕体验是专为捕获内容而设计的;大屏幕支持使用台式机和平板电脑专用的习惯用法进行编辑;Web 体验是为共享而量身定制的。所有这些量身定制的经验都共享相同的代码库,该代码库是开源的。

         如果你还没有尝试过 Flutter,建议你赶紧试试,它会对你的应用程序开发体验来会是一次重大升级。在 Flutter 中提供了一个开放源代码工具包,用于通过单个代码库构建针对移动,台式机,Web和嵌入式设备的美观而快速的应用程序,这些应用程序既可以满足 Google 的苛刻需求,也可以满足我们客户的需求。

Flutter 是免费的开放源代码,我们很高兴看到开发者使用 Flutter 2 构建的优秀的应用!


作者:恋猫de小郭
链接:https://juejin.cn/post/6935621027116531720

关注我获取更多知识或者投稿

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/c6e5uli1n/article/details/114384205

智能推荐

jsp如何编写java代码_如何在JSP页面内编写java代码?(代码示例)_仆儿的博客-程序员秘密

在JSP页面中可以通过脚本元素编写java代码,下面本篇文章就来带大家认识一下JSP的脚本元素,了解在JSP页面内编写java代码的方法,希望对大家有所帮助。Java Server Page(JSP)是一种通过使用servlet来控制Web页面内容或外观的技术。在Web页面中指定并在Web服务器上运行的小程序,用于在将Web页面发送给请求它的用户之前对其进行修改。【视频教程推荐:Java教程】JS...

mysql lock wait t_mysql_提示 Lock wait timeout exceeded解决办法_三分钟音乐社的博客-程序员秘密

我的mysql报这个错 err=1205 - Lock wait timeout exceeded; try restarting transaction利用 SHOW PROCESSLIST来查看问题原因:原因是你使用的InnoDB 表类型的时候,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,因为有的锁等待超过了这个时间,所以抱错.你可以把这个时间加长,...

通俗易懂--SVM算法讲解(算法+案例)_mantchs的博客-程序员秘密

标题1.SVM讲解1.1支持向量机(SVM)的由来1.2如何找到超平面函数间隔几何间隔1.3最大间隔分类器1.4后续问题1.5新闻分类实例寻觅互联网,少有机器学习通俗易懂之算法讲解、案例等,项目立于这一问题之上,整理一份基本算法讲解+案例于文档,供大家学习之。通俗易懂之文章亦不可以面概全,但凡有不正确或争议之处,望告知,自当不吝赐教!GitHub地址(代码加数据)1.SVM讲解SVM是一个...

js jquery_tingna_ye的博客-程序员秘密

js jquery 是javascript的一个库,将一些js代码封装,如果用js实现某些效果js代码需要写很长一段代码,但是如果直接调用 jquery库的话,可以更方便,更简洁的实现效果,  js jquery 实例:     $.each( [0,1,2], function(i, n){ alert( "Item #" + i + ": " + n ); }); 等价于:va

主题模型TopicModel:LDA主题模型的评估_lda一致性计算公式_-柚子皮-的博客-程序员秘密

LDA主题模型好坏的评估,判断改进的参数或者算法的建模能力。Blei先生在论文《Latent Dirichlet Allocation》实验中用的是Perplexity值作为评判标准。一、Perplexity定义http://en.wikipedia.org/wiki/Perplexityperplexity是一种信息理论的测量方法,b的perplexity值定义为基于b的

FPGA源码说明/项目开发_fpga码源_我爱C编程的博客-程序员秘密

FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA设计不是简单的芯片研究,主要是利用 FPGA 的模式进行其他行业产品的设计。与 ASIC 不同,FPGA在通信行业的应用比较广泛。

随便推点

POJ 2689 Prime Distance (素数筛选法,大区间筛选)_weixin_30606669的博客-程序员秘密

题意:给出一个区间[L,U],找出区间里相邻的距离最近的两个素数和距离最远的两个素数。用素数筛选法。所有小于U的数,如果是合数,必定是某个因子(2到sqrt(U)间的素数)的倍数。由于sqrt(U)最大也只有2^16,所以我们可以用素数筛选法,先预处理出2~2^16之间的素数,然后再用这些素数筛选出L~U之间的素数。接着就好办了。有几个要注意的是:1:L为1的情况,可以通过令L=...

ClickHouse插入数据成功但是没有数据的问题_清霄的博客-程序员秘密

日常小笔记背景:使用ALTER TABLE chtable_c1 delete where id<15; 删除数据后。再插入相同的数据就会出现有如下情况原来的数据插入语句和再次查看数据日志中的问题提现:2019.09.09 22:17:07.014152 [ 47 ] {5444152b-f8a2-4092-8076-58e5d4462ca8} <De...

Android学习笔记----Intent_weixin_30526593的博客-程序员秘密

下面讲解一下Android中的Intent的内容Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交...

Spring 事务操作_springbean事务操作_来旺的博客-程序员秘密

事务操作概念什么是事务事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败,所有操作都失败典型场景:银行转账事务四个特性(ACID):原子性:不可分割一致性:总量不变隔离性:两个人同时操作,不会对彼此产生影响持久性:提交后表中数据发生真正变化搭建环境创建数据库表,添加记录创建service,搭建dao,完成对象的创建和注入。service注入daodao注入jdbctemplate,在JDBCTemplate注入dataSource在d

浅论3大方法求单源最短路以及2大方法求最小生成树_最小生成树 单源最短路_Fuko_Ibuki的博客-程序员秘密

Prim法求最小生成树Kruskal法求最小生成树Dijkstra法求单源最短路Floyed法求单源最短路Bellman_Ford or SPFA 求单源最短路在打比赛之前要打好基础.这一次我搞了一些单源最短路以及最小生成树的代码.我把它们放在这里.Prim法求最小生成树首先我们手上有一个加权连通图,这种我们可以自己脑补. 我建立一个集合E表示已经加入生成树的点.

推荐文章

热门文章

相关标签