Flutter3.0发布啦~快来看看有什么新功能-2022GoogleI/O

作者&投稿:乐正享 (若有异议请与网页底部的电邮联系)
~

本次Flutter3.0主要包括macOS和Linux的稳定版发布,以及相关的性能改进等。原文链接https://medium.com/flutter/whats-new-in-flutter-3-8c74a5bc32d0

又到了发布Flutter稳定版本的时候,在三个月前我们发布了Flutter关于Windows的稳定版,而今天,除Windows之外,Flutter也正式支持macOS和Linux上的稳定运行。

在这里感谢所有Fluttercontributors的辛勤工作,本次版本发布合并了5248个PR。

Flutter3.0的发布,主要包括Flutter对macOS和Linux正式版支持、进一步的性能改进、手机端和Web端相关的更新等等。此外还有关于减少对旧版本Windows的支持,以及一些breakingchanges列表。

稳定版Flutter已经支持所有桌面平台

Linux和macOS已达进入稳定版本阶段,包括以下功能:

级联菜单和对macOS系统菜单栏的支持

现在可以使用PlatformMenuBar在macOS上创建菜单栏,该Widget支持仅插入平台菜单,并控制macOS菜单中显示的内容。

所有桌面平台全面支持国际化文本输入

包括使用inputmethodeditors(IME),如中文、日文和韩文,在Flutter3.0上所有桌面平台上都得到支持,包括第三方输入法如搜狗和谷歌日文输入法。

所有桌面平台的?Accessibility

FlutterforWindows、macOS和Linux全面支持Accessibility服务,例如屏幕阅读、无障碍导航和倒置颜色等。

macOS上默认的Universalbinaries

从Flutter3开始,FluttermacOS桌面应用都将被构建为universalbinaries,从而支持现有的基于Intel处理器的Mac,和Apple的AppleSilicon设备。

放弃Windows7/8

在Flutter3.0中,推荐将Windows的版本提升到Windows10,虽然目前Flutter团队不会阻止在旧版本(Windows7、Windows8、Windows8.1)上进行开发,但Microsoft不再支持这些版本,虽然Flutter团队将继续为旧版本提供“尽力而为”的支持,但还是鼓励开发者升级。

注意:目前还会继续为在Windows7和Windows8上能够正常运行Flutter提供支持;此更改仅影响开发环境。

移动端更新

对移动端的更新包括以下内容:

折叠手机的支持

Flutter3版本开始支持可折叠的移动设备。在Microsoft发起的合作中,新功能和Widget可让开发者在可折叠设备上拥有更舒适的体验。

其中包括MediaQuery现在包含一个DisplayFeatures列表,用于描述设备的边界和状态,如铰链、折叠和切口等。此外DisplayFeatureSubScreen现在可以通过定位其子Widget的位置不会与DisplayFeatures的边界重叠,并且目前已经与framework的默认对话框和弹出窗口集成,使得Flutter能够立即感知和响应这些元素。

这里非常感谢Microsoft团队,尤其是@andreidiaconu,感谢他们的contributions!另外可以试用一下SurfaceDuo模拟器示例,它包括一个带有FlutterGallery特殊分支的示例,可以用于了解Flutter在折叠屏中的实际应用。

iOS可变刷新率支持

Flutter现在支持iOS上的ProMotion刷新率,包括iPhone13Pro和iPadPro等。

在这些设备上,Flutter可以以达到120hz的刷新率进行渲染,再次之前iOS上的刷新率限制为60hz,有关更多详细信息,请参阅flutter.dev/go/variable-refresh-rate。

更多可见:《Flutter120hz高刷新率在Android和iOS上的调研总结》

简化iOS的发布

Flutter团队为flutterbuildipa命令添加了新选项支持以简化发布iOS应用。

当开发者准备好分发到TestFlight或AppStore时,可以通过运行Flutterbuildipa以构建Xcode存档(.xcarchive文件)和应用程序包(.ipa文件)。这时候可以选择添加—-export-methodad-hoc、?—-export-methoddevelopment或—-export-methodenterprise来定制发布支持。

构建应用程序包后,可以通过AppleTransportmacOS应用或在命令行上使用xcrunaltool(运行manaltool用于AppStoreConnectAPI的密钥身份验证)将其上传到Apple。上传后,应用就可以可发布到TestFlight或AppStore。

通过这个简化流程,在设置初始的Xcode项目设置后,例如名称和应用图标,开发者可以不再需要打开Xcode来发布iOS应用。

Gradle版本更新

现在使用Flutter工具创建新项目,会发现生现在开始使用最新版本的Gradle和AndroidGradlePlugin,对于现有项目,需要手动将版本升级到Gradle的7.4和AndroidGradle插件的7.1.2。

停用32位iOS/iOS9/iOS10

正如2022年2月发布的2.10稳定版本时所说的那样,Flutter对32位iOS设备以及iOS9和10版本的支持即将结束。此更改影响iPhone4S、iPhone5、iPhone5C以及第2、3和4代iPad设备。Flutter3是它们最后一个支持iOS版本支持。

要了解有关此更改的更多信息,请查看RFC:Endofsupportfor32-bitiOSdevices。

Web更新

Web应用更新包括以下内容:

图像解码

Flutterweb现在会在支持它的浏览器中自动检测和使用ImageDecoderAPI,而截至今天大多数基于Chromium的浏览器(Chrome、Edge、Opera、三星浏览器等)都添加了此API。

新的API使用浏览器的内置图像编解码器从主线程异步解码图像,这将图像解码速度提高了2倍,并且它从不阻塞主线程,从而消除了以前由图像引起的所有卡顿问题。

Web应用的生命周期

FlutterWeb应用程序的新生命周期API使开发者可以更灵活地从托管HTML页面控制Flutter应用的引导过程,并帮助Lighthouse分析应用的性能,包括以下经常请求的场景:

启动画面。

加载指示器。

在Flutter应用程序之前显示的纯HTML交互式登录页面。

有关更多信息,请查看docs.flutter.dev上的自定义Web应用程序初始化。

工具更新

Flutter和Dart工具的更新包括:

更新的lint包

lint包的2.0版已发布:

Flutter:https://pub.dev/packages/flutter_lints/versions/2.0.0

Dart:https://pub.dev/packages/lints/versions/2.0.0

在Flutter3中生成的应用程序会通过fluttercreate自动启用v2.0的lints集。Flutter现在鼓励现有的应用、包和插件都迁移到v2.0以遵循该协议,迁移支持可以通过运行flutterpubupgrade--major-versionsflutter_lints.

v2中大多数新添加的lint警告都带有自动修复功能。因此在pubspec.yaml文件中升级到最新的包版本后,可以运行dartfix—-apply自动修复大多数lint警告(可能一些警告仍然需要一些手动工作。

尚未使用?package:flutter_lints?的应用、软件包或插件可以按照迁移指南进行迁移。

性能改进

感谢contributorknopp,局部重绘的支持已在Android设备上启用。

在本地测试中,此更改将Pixel4XL设备在backdrop_filter_perf基准测试上,90thpercentile和99th的帧光栅化时间减少了5倍,现在在iOS和基础此更新的Android设备上都启用了,当存在单个矩形脏区域时的部分重绘支持。

另外,Flutter3.0还进一步改进了不透明动画相关的性能,特别是当一个OpacityWidget只包含一个渲染primitive时,Opacity下关于saveLayer的调用通常会被省略。在基准测试下中,这种情况下的光栅化时间提高了一个数量级,在未来的版本中,我们计划将此优化应用于更多场景。

再次感谢contributorJsouLiang的提交,现在引擎的光栅和UI线程在Android和iOS上运行的优先级高于其他线程,例如DartVM后台垃圾回收线程,而在我们的基准测试中,这导致平均框架构建时间加快了约20%。

在Flutter3.0之前,光栅缓存的准入策略仅查看图片中绘制操作的数量,不幸的是这会导致引擎花费更多的内存,来缓存实际上渲染速度非常快的图片。新版本引入了一种机制,该机制会根据其图片绘制操作的成本来估计图片的渲染复杂性,将其用作光栅缓存准入策略从而减少内存使用量,并且不会在我们的基准测试中降低性能。

感谢contributorColdPaleLight,他修复了帧调度中的一个错误,该错误导致iOS上的少量动画帧被丢弃的问题。

Impeller

团队一直在努力寻找解决iOS和其他平台上卡顿的解决方案。在Flutter3版本中可以在iOS上preview一个名为Impeller的实验性渲染工具,Impeller在引擎构建时会预编译一组更小、更简单的着色器,这样它们就不会在应用程序运行时编译,这一直是Flutter中卡顿的主要来源。

Impeller尚未准备好正式发布,目前还远未到完成阶段,所以并非所有Flutter功能都能实现,但我们对它在Flutter?/gallery应用程序中的保真度和性能感到非常满意,特别是Gallery应用里过渡动画中最差的帧快了大约20倍。

Impeller可以在iOS上通过启动tag来启动,开发者可以传递—-enable-impeller到flutterrun或将Info.plist文件中的FLTEnableImpeller标志设置为true来尝试Impeller。

Android上的内嵌广告

使用google_mobile_ads时,开发者应该会在用户关键交互(例如页面之间的滚动和转换)中得到更好的性能。

在底层,Flutter现在使用新的异步组合来实现Android视图,它们通常称为platformviews。这意味着Flutter光栅线程不再需要等待Android视图渲染。相反,Flutter引擎会使用它管理的OpenGL纹理将视图放置在屏幕上。

更多更新

Flutter生态系统的其他更新包括:

Material3

Flutter3支持MaterialDesign3,即下一代MaterialDesign。

Flutter3为Material3提供了更多可选支持,包括MaterialYou功能如:动态颜色,新的颜色系统和排版、组件的更新以及Android12中引入的新视觉效果,如新的触摸波纹设计和拉伸过度滚动效果。

开发者可以在codelab的?TakeyourFlutterappfromBoringtoBeautiful?中尝试Material3功能,有关如何选择加入这些新功能,以及哪些组件支持Material3的详细信息,请参阅API文档。

主题扩展

Flutter现在可以使用名为Themeextensions的概念向Material的ThemeData添加任何内容,开发者可以通过ThemeData.extensions去添加自己想要的内容,而不是(在Dart意义上)继承ThemeData并重新实现其copyWith、lerp和其他方法。

此外,作为package开发人员,你可以提供ThemeExtensions相关内容,有关此内容的更多详细信息,请参阅flutter.dev/go/theme-extensions并和?GitHub上的示例。

Ads

对于发布商而言,个性化广告征求同意并处理Apple的AppTrackingTransparency(ATT)非常重要。

为了支持这些要求,Google提供了用户消息传递平台(UMP)SDK,它取代了之前的开源ConsentSDK,在即将发布的GMASDKforFlutter中,我们将添加对UMPSDK的支持,以帮助发布者获得用户同意。

有关更多详细信息,请查看pub.dev上的google_mobile_ads页面。

Breakingchanges

随着Flutter的不断改进,我们的目标是尽量减少重大更改的数量,而随着Flutter3的发布,Flutter有以下重大变化:

在v2.10之后删除了已弃用的API

由ZoomPageTransitionsBuilder替换的页面过渡

迁移useDeleteButtonTooltip到Chips的deleteButtonTooltipMessage

ThemeData的toggleableActiveColor属性已被弃用

如果你正在使用这些API,请参阅Flutter.dev上的迁移指南。

原文:https://juejin.cn/post/7096617842023333925


玛曲县17229716608: 小米12pro接口是什么版本
闽耐小儿: 2、0因为USB3.0和小米的快充协议有冲突,所以只能放弃USB3.0,继续使用USB2.0.Xiaomi 12 Pro是小米公司于2021年12月28日在“Xiaomi 12新品发布会”发布的手机产品.Xiaomi 12 Pro采用了6.73英寸微曲柔性屏,拥有黑色、蓝色、紫色、原野绿四种配色可选.Xiaomi 12 Pro机身长度为163.6mm,宽度为74.6mm,厚度为8.16mm(玻璃版)或8.66mm(素皮版),重量205g(玻璃版)或204g(PU版).

玛曲县17229716608: 孕妇是怎么啦?月经过去15天还没来?月经过去15天还没来,可是又
闽耐小儿: 浴巾已经推迟15天没有来了,但是检查又没有怀孕的情况下,可能是月经不调引起的,先不要着急,等一个星期之后再去做个复查,看一下吧.

玛曲县17229716608: M孕妇牙龈出血怎么办呢?大家知道吗?孕妇牙龈出血怎么办?知道的快来说说啦! -
闽耐小儿: 牙龈出血,牙龈出血是口腔科常见的症状之一.一般情况下,牙龈出血常见于牙周炎的早期—牙龈炎.牙龈出血不仅仅出现于口腔科的疾病,它还会出现于全身的其它疾病,可能预示着其它系统的疾病,如白血病、遭遇放射性辐射后、自身免疫性疾病等.由于口腔卫生不良,有大量牙垢、牙石导致的刺激出血,牙龈出血一定要养成良好的口腔卫生习惯,可以预防牙龈炎、牙周炎的发生.坚持早晚刷牙,饭后漱口,清除污物和食物残渣,可防止牙垢和牙结石的形成.治疗牙龈出血用些健康安全的牙膏就能治愈了. 在选择口腔护理产品的时候,也要注意一点,真正纯植物无添加的口腔护理产品都是一次性无菌小包装的.

玛曲县17229716608: 最近想买个本用啦,不知道哪个比较好点, -
闽耐小儿: 去年卖的DELLM1210 12000RMB 装的VISTA系统如果你只是普通用,建议不装VISTA,很多游戏会装不上买个普通一般的,几千就行

玛曲县17229716608: USB2.0与3.0的有何区别 -
闽耐小儿: 之前我们使用移动硬盘的时候会发现,移动硬盘的速度虽然比U盘快不少,但是移动硬盘的速度完全不是硬盘的速度,比硬盘的速度慢上很多,但是如果尝试一下使用了USB 3.0的移动硬盘会发现硬盘的速度就跟直接接在主板上一样的速度,可...

玛曲县17229716608: 如何让一张纸浮在空中 魔术视频 快快快!!!我弟弟要过俩天就要生日了,我要这个魔术,拜托啦!!! -
闽耐小儿: 系一根绳子挂着到几何中心 再找个板凳来把绳子的另一头挂到天花板上找一根长一点绳子可以放在桌子上 在桌子上面...

玛曲县17229716608: 魔兽世界3.0什么时候开放?? -
闽耐小儿: 网上有传言说是12月8号或9号开3.0

玛曲县17229716608: 我有家啦 -- 观后感怎么写? -
闽耐小儿: 巴金的长篇小说<<激流三部曲>>之一<<家>>,在走马观花中,我很快地把它读完了,在读这部名著时,我的心充满了悲愤与怜悯,即使现在读完了,我的心还是被其中的主人公占据...

玛曲县17229716608: 弹弹堂什么时候出3.0?
闽耐小儿: 弹弹堂3.0的测试服已经出了,可能很快就会出现正式的更新吧大概在1个月左右

玛曲县17229716608: 英语翻译龟兔赛跑兔子长了四条腿,一蹦一跳,跑得可快啦.乌龟也长了四条腿,爬呀,爬呀,爬得真慢.有一天,兔子碰见乌龟,笑眯眯地说:“乌龟,乌龟... -
闽耐小儿:[答案] 龟兔赛跑 Rabbit four long legs,jump...jump...,run fast you can be. Four turtles have long legs,climb it,climb it,climb really slow. One day,the rabbit ran into a turtle,smiling and said:"The tortoise,the tortoise,let's come to a race,will you?" Turtle rabbit know ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网