Flutter 3. 10 新变化 新征程

白色小船yx 2023-06-15 15:47:24

随着 Google I/O 2023 的发布, Flutter 3.10 和 Dart 3.0 也都正式发,不得不说如今 Dart 的版本号终于快追上 Flutter 得版本号了,特别随着 Dart 3 的发布, Flutter 在 records 和 patterns 的加持下,开发体验终于开始步入现代化语言的进程。

 

对于 Flutter 开发者来说,Flutter 3.10 和 Dart 3.0 可以说是新的分水岭,详细介绍可见下方链接,接下来我们就来简单总结一下吧。

Flutter 3.10 主要包括有对 Web、mobile、graphics、安全性等方面的相关改进,核心其实就是:

  • iOS 默认使用了 Impeller
  • 一堆新的 Material 3 控件袭来
  • iOS 性能优化,Android 顺带可有可无的更新
  • Web 可以无 iframe 嵌套到其他应用

1、Dart 3

众所周知,Flutter是建立在Dart语言基础上的,本次大会上,Dart发布了一个大的版本,这是编程语言的重大更新。

(Flutter 的安装说明可在docs.dev.flutter找到,Dart SDK 的安装说明可在dart.dev找到。)Dart 3现在作为稳定版本提供,包含以下三项主要改进

  • 100% 可靠的 null 安全性,它避免了 null 的运行时错误,提供更小的编译输出,并提高了性能。目前,Dart开发包管理器上的 1,000 个包中有 99%支持空安全。
  • 新语言功能支持具有记录、解构和模式匹配的结构化数据,以及用于现代编程的抽象数据类型。
  • 类修饰符,一种“高级用户”功能,使包所有者能够更好地表达 API 的功能。

Dart 的构建者也一直致力于将 Dart 编译为 Wasm 二进制格式,目标是在浏览器中带来更快的加载速度并提高 Web 应用程序的性能。Dart 到Wasm 的编译现在正在预览中。要编译为 Wasm,开发人员需要支持WasmGC 的浏览器。

2、Material 3 widget

Flutter 3.10改进了对 Material 3 widget 工具包的支持,包括对 Material 3 算法配色方案生成的支持,以及一些使构建 macOS 和 iOS 应用程序更容易的改进。后者包括在可编辑文本小部件中添加拼写检查支持、一个新的复选框小部件以及对无线调试的支持。Impeller 渲染器从 Flutter 3.7 开始预览,现在是 iOS 上的默认渲染器,承诺更少的卡顿和更一致的性能。

Flutter 3.10 中还有一个 JNI 桥接器,用于连接用Kotlin编写的 Jetpack 库,无需外部插件即可直接从 Dart 调用新的 Jetpack 库。

Google在大会上,对 Flutter 的总体目标是提供五个核心特性

  • 美观:提供对屏幕上每个像素的控制;
  • 速度:由硬件加速图形提供支持;
  • 生产力:工作负载由热重载和开发工具支持;
  • 可移植性:为多个平台利用单一共享代码库;
  • 普遍可用性:通过免费和开源来实现。

3.10 版本涵盖了除 Impeller 之外还有更多性能改进和修复。

此更改消除了最近 iOS 120Hz 显示器上的低帧率问题,在某些情况下它会使帧速率增加三倍,这帮助我们解决了六个 GitHub issue。

这一变化具有意义重大,以至于我们向后移植了一个修补程序到 3.7 版本中

在 3.7 稳定版中,我们将本地图像的加载从平台线程转移到 Dart 线程,以避免延迟来自平台线程的 vsync 事件。但是用户注意到 Dart 线程上的这项额外工作也导致了一些卡顿。

在 3.10 中,我们将本地图像的打开和解码从 Dart 线程移至后台线程,这个更改消除了具有大量本地图像的屏幕上潜在的长时间停顿,同时避免了延迟 vsync 事件,在我们的本地测试和自动化基准测试中,这个更改将多个同步图像的加载时间缩短了一半。

我们继续在 Flutter 新的内部 DisplayList 结构之上构建优化,在 3.10 中,我们添加了 R-Tree based culling 机制。

这种机制在我们的渲染器中更早地移除了绘制操作的处理。例如 优化加速了输出在屏幕外失败的自定义painter。

我们的 microbenchmarks显示 DisplayList 处理时间最多减少了 50%,具有裁剪自定义绘画的 App 可能会看到不同效果的改进,改进的程度取决于隐藏绘制操作的复杂性和数量。

  • 消除 ios 启动延迟

之前应用中标识符查找低效策略增加了应用启动延迟,这个启动延迟的增长与应用的大小成正比。

而在 3.10 .1,这将大型应用的启动延迟减少了 100 毫秒或大约 30–50%。

  • 缩小尺寸

Flutter 使用 SkParagraph 作为文本、布局和渲染的默认库,之前我们包括了一个标志以支持回退到遗留 libtxtminikin

由于我们对 SkParagraph 有充分的信心,我们在 3.10 中删除了 libtxtminikin 以及它们的标志,这将 Flutter 的压缩大小减少了 30KB。

  • 稳定性

在 3.0 版本中,我们在渲染管道后期启用了一项 Android 功能,该功能使用高级 GPU 驱动,当只有一个“dirty” 区域发生变化时,这些驱动功能会重新绘制较少的屏幕内容。

我们之前已经将它添加到早期的优化中以达到类似的效果,尽管我们的基准测试结果不错,但还是出现了两个问题:

  • 首先,改进最多的基准可能不代表实际用例。
  • 其次,事实证明很难找到支持此 GPU 驱动功能的设备和 Android 版本集

鉴于有限的进步和支持,我们在 Android 上禁用了部分重绘功能。

而使用 Skia 后端时,该功能在 iOS 上依然保持启用状态,我们希望在未来的版本中可以通过impeller启用他。

PlatformView 性能

当 PlatformViews 出现在屏幕上时,Flutter会限制 iOS 上的刷新率以减少卡顿,当应用显示动画或可滚动时,用户可能会在应用出现 PlatformViews 时注意到这一点。

macOS 和 iOS 可以在插件中使用共享代码

Flutter 现在支持插件 pubspec.yaml 文件中的 sharedDarwinSource ,这个 key 表示 Flutter 应该共享 iOS 和 macOS 代码。

ios: pluginClass:  PathProviderPlugin dartPluginClass:  PathProviderFoundation sharedDarwinSource:  true 
macos: pluginClass:  PathProviderPlugin dartPluginClass:  PathProviderFoundation sharedDarwinSource:  true

应用扩展的新资源

我们为 Flutter 开发人员添加了使用 iOS 应用扩展文档,这些扩展包括实时活动、主屏幕控件和共享扩展。

为了简化创建主屏幕控件和共享数据,我们向 path_provider 和 homescreen_widget 插件添加了新方法。

3. 开发者工具

我们继续改进了 DevTools,这是一套用于 Dart 和 Flutter 的性能和调试工具,一些亮点包括:

  • DevTools UI 使用 Material 3,这让外观现代化又增强了可访问性。
  • DevTools 控制台支持在调试模式下评估正在运行的应用,在 3.10 之前,只能在暂停应用时执行此操作。
  • 嵌入式 跟踪查看器取代了以前的时间线跟踪查看器。

Perfetto 可以处理更大的数据集,并且比传统的跟踪查看器表现得更好,例如:

  • 允许固定感兴趣的线程
  • 单击并拖动以从多个帧中选择多个时间轴事件
  • 使用 SQL 查询从时间轴事件中提取特定数据

 

4. 弃用和重大更改

弃用的 API

3.10 中的重大更改包括在 v3.7 发布后过期的弃用 API。。

Dart Fix 可以修复其中的许多问题,包括在 IDE 中快速修复和使用dart fix命令批量应用。

  • Android Studio Flamingo 升级

将 Android Studio 升级到 Flamingo 后,你可能会在尝试 flutter runflutter build Flutter Android 应用时看到错误。

发生此错误是因为 Android Studio Flamingo 将其捆绑的 Java SDK 从 11 更新到 17使用 Java 17 时,之前的 7.3 Gradle 版本无法运行。

我们更新来了 flutter analyze --suggestions 以验证是否由于 Java SDK 和 Gradle 版本之间的不兼容而发生此错误。

要了解修复此错误的不同方法,请查看我们的迁移指南:docs.flutter.dev/go/android-…

  • Window singleton 弃用

该版本弃用了 Window singleton,依赖它的应用和库需要开始迁移

当你的应用在未来版本的 Flutter 中做支持时,这会可以为你的应用提前做好多窗口准备支持。

以上就是 Flutter 3.10 的主要变化和功能 , Flutter是一种移动应用程序开发框架,可以用于开发iOS和Android应用程序。期待 Fiutter 的新的征程,新的起点 !!

 

 

 


 

...全文
830 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文系统研究了开关频率大于谐振频率(fs>fr)工况下,移相混合控制LLC谐振变换器在低压增益区域的工作特性,深入分析其在变频与移相结合控制模式下的调制机理、工作模态划分及损耗分布规律。通过Simulink平台构建高保真仿真模型,对变换器在不同负载和输入条件下的电压增益、转换效率、关键器件电压电流应力等性能指标进行了全面仿真验证,重点探讨了其在低增益区间的软开关实现能力与效率优化潜力,旨在提升LLC变换器在宽范围输入输出应用中的动态响应与能源转换效率。; 适合人群:从事电力电子变换器设计、高频电源开发及相关领域的高校研究生、科研院所研究人员及企业研发工程师,要求具备扎实的电路理论基础、电力电子技术知识以及一定的Simulink仿真能力。; 使用场景及目标:①深入理解LLC谐振变换器在fs>fr条件下采用移相混合控制的内在工作机理与模态转换过程;②掌握利用Simulink搭建复杂谐振变换器精确仿真模型的方法与技巧;③分析并优化低压增益区的增益特性与损耗构成,为设计高效率、高功率密度的软开关电源提供理论依据和数据支持; 阅读建议:建议读者结合文中所述仿真模型,亲自复现仿真过程,重点观察不同控制参数(如移相比、开关频率)对电压增益曲线和关键波形的影响,并对比传统变频控制策略,深入探究混合控制在拓宽调压范围、提升轻载效率方面的优势,从而深化对现代高效谐振电源设计的理解。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的配电网光伏储能双层优化配置模型,以IEEE33节点系统为标准算例,实现光伏发电单元与储能系统的协同选址与定容优化。该模型采用双层架构设计,上层以投资成本、运行经济性及网络损耗最小为目标优化设备配置方案,下层通过潮流计算评估系统在不同负荷场景下的运行性能,综合考虑电压稳定性、供电可靠性及可再生能源消纳能力,最终通过Matlab编程实现完整求解流程,为高渗透率分布式电源接入背景下的配电网规划提供了有效的技术支撑。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、高校科研人员及从事能源并网、智能配电网规划与优化的工程技术人员。; 使用场景及目标:①研究含高比例光伏接入的配电网规划与运行协同优化问题;②掌握双层优化建模方法与粒子群算法在复杂电力系统问题中的应用技巧;③为实际工程中分布式光伏与储能系统的科学选址与容量配置提供理论依据与仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解双层迭代求解机制,重点关注算法收敛性分析、参数敏感性测试,并可通过更换初始种群、调整权重因子或引入其他标准测试系统(如IEEE69节点)进行对比实验,进一步验证所提模型的普适性与鲁棒性。
内容概要:本文围绕双机并联虚拟同步发电机(VSG)在微电网中的功率分配、黑启动、虚拟阻抗与预同步控制展开,基于Simulink平台构建了完整的微电网系统仿真模型。重点研究了VSG在双机并联运行下的有功/无功功率均分控制策略,通过引入虚拟阻抗技术有效解决了因线路阻感比差异导致的功率分配不均问题。同时,设计了微电网黑启动流程与并网预同步控制模块,实现了待并网系统与主网在电压幅值、频率和相位上的精确同步,显著降低了并网冲击电流。系统整合了VSG控制、下垂控制、虚拟阻抗、锁相环(PLL)及预同步逻辑等关键环节,全面验证了多VSG协同运行的稳定性、自主恢复能力与并网可靠性。; 适合人群:具备电力系统、电力电子及自动控制等相关专业知识,从事微电网、分布式发电、VSG控制与并网技术研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解双机并联VSG系统中功率分配不均的机理及虚拟阻抗的补偿作用;②掌握微电网黑启动全过程及预同步控制的关键技术要点;③学习并实践基于Simulink的微电网多层次、多目标控制策略的建模与仿真方法;④为相关科研课题、毕业设计或实际工程项目提供可复现、可拓展的技术方案与仿真参考。; 阅读建议:建议结合提供的Simulink模型文件进行同步学习,重点关注VSG控制参数整定、虚拟阻抗设计原则、预同步切换逻辑等核心模块的实现细节,并可通过改变负载投切、线路参数或初始频率偏差等条件进行多工况仿真测试,以深入探究系统的动态响应特性与鲁棒性。

1,470

社区成员

发帖
与我相关
我的任务
社区描述
加入“谷歌开发者”社区,一起“共码未来。
android 企业社区
社区管理员
  • 谷歌开发者
  • 开发者大赛发布
  • 活动通知
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧