Flutter 3.19 有什么新性能?
视频
https://youtu.be/Dql8qw3XZyE
https://www.bilibili.com/video/BV1Ht421h7Pf/
前言
原文 https://ducafecat.com/blog/whats-new-in-flutter-3-19
通过 Gemini API、Impeller 更新和 Windows Arm64 反对,彻底改变利用开发方式
https://medium.com/flutter/whats-new-in-flutter-3-19-58b1aae2…
sdk 包下载
https://docs.flutter.dev/release/archive?tab=macos
注释
明天咱们向您介绍一个新的 Flutter 版本,Flutter 3.19。此版本为 Gemini 带来了一个新的 Dart SDK,该 SDK 使开发人员可能对小部件动画进行细粒度管制,通过对 Impeller 进行更新晋升了渲染性能,提供了工具来帮忙实现深链接,反对 Windows Arm64 等等!
Flutter 社区持续给人留下深刻印象,由 168 名社区成员合并了 1429 个拉取申请,其中 43 名社区成员提交了他们的第一个 Flutter 拉取申请!
持续浏览以理解 Flutter 社区为这个最新版本做出的所有新增和改良!
AI integration 整合
Gemini Google AI Dart SDK beta release 测试版公布
Google AI Dart SDK 已公布到 beta 版。这使您可能在 Dart 或 Flutter 应用程序中构建生成性 AI 性能,由 Gemini 提供反对,这是 Google 最新的 AI 模型系列。当初在 pub.dev 上有一个 google_generative_ai
包。在这篇博文中理解更多对于如何应用 Google AI Dart SDK 构建的信息,或者间接开始应用 Dart 疾速入门。
https://pub.dev/packages/google_generative_ai
https://medium.com/flutter/harness-the-gemini-api-in-your-dar…
https://ai.google.dev/tutorials/dart_quickstart?hl=zh-cn
Framework 框架
Scrolling improvements 滚动改良
Flutter 以前在拖动两个手指时会滚动两倍快。当初,您能够应用 MultiTouchDragStrategy.latestPointer
来配置默认的 ScrollBehavior
,以取得与手指数量无关的滚动行为。无关此更改的更多信息,请参阅迁徙指南。
https://docs.flutter.dev/release/breaking-changes/multi-touch…
咱们还为 SingleChildScrollView
和 ReorderableList
实现了谬误修复,解决了一些报告的解体和意外行为。
在二维滚动中,咱们解决了一个问题,当初,如果您在滚动进行中拖动或点击,滚动流动会按预期进行。
自上一次公布以来,two_dimensional_scrollables
包中的 TableView
小部件也已更新,提供了更多的优化,减少了对合并单元格的反对,并在 3.16 稳固版本公布后采纳了更多 2D 根底的新性能。
AnimationStyle 动画格调
感激 Flutter 社区成员 @TahaTesser 的奉献,Flutter 当初有一个新的小部件,容许用户笼罩小部件中的默认动画行为,例如 MaterialApp
,ExpansionTile
和 PopupMenuButton
,为开发者提供了笼罩动画曲线和持续时间的能力。
https://github.com/flutter/flutter/pull/138721
SegmentedButton.styleFrom 分段按钮款式
Flutter 社区成员 @AcarFurkan 增加了一个动态实用办法,就像其余按钮类型提供的办法一样。该办法能够疾速创立一个能够与其余分段按钮共享或用于配置应用程序的 SegmentedButtonTheme
的 ButtonStyle
。
Adaptive Switch 自适应开关
这个自适应组件在 macOS 和 iOS 上看起来和感觉像本地利用,而在其余中央则具备 Material Design 的外观和感觉。它不依赖于 Cupertino 库,因而在所有平台上的 API 完全相同。
请参阅 Switch.adaptive
构造函数 API 页面上的自适应开关拉取申请和实时示例。
https://github.com/flutter/flutter/pull/130425
https://api.flutter.dev/flutter/material/Switch/Switch.adapti…
SemanticsProperties accessibility identifier 语义属性可拜访标识符
SemanticsProperties
中的新可拜访性标识符为本机可拜访性层次结构中的语义节点提供了一个标识符。在 Android 上,它显示在可拜访性层次结构中的 resource-id
。在 iOS 上,它设置为 UIAccessibilityElement.accessibilityIdentifier
。咱们要感激社区成员 @bartekpacia 对这个逾越引擎和框架的更改的奉献。
https://github.com/flutter/engine/pull/47961
Increased access to text widget state 减少对文本小部件状态的拜访
咱们在 MaterialStatesController
中增加了对 TextField
和 TextFormField
的反对,这样您就能够听到 MaterialState
的变动。
UndoHistory stack 撤销历史堆栈
咱们修复了一个问题,即在日语键盘上,撤销 / 重做历史记录可能会隐没。当初您能够在将条目推送到堆栈之前批改它。
https://github.com/flutter/flutter/pull/138674
https://github.com/flutter/flutter/issues/130881
Engine 引擎
Impeller progress 停顿
Android OpenGL preview 预览
在 3.16 稳固版本中,咱们邀请用户在反对 Vulkan 的 Android 设施上尝试应用 Impeller,笼罩了 77% 的 Android 设施。在过来的几个月中,咱们曾经将 Impeller 的 OpenGL 后端与 Vulkan 后端的性能达到了雷同程度,例如,增加了对 MSAA 的反对。这意味着简直所有 Android 设施上的 Flutter 利用都能正确渲染,除了一小部分行将推出的性能,例如自定义着色器和对外部纹理的齐全反对。
https://github.com/flutter/engine/pull/47030
MSAA 是多重采样抗锯齿(Multisample Anti-Aliasing)的缩写。在图形学中,抗锯齿是一种用来缩小图像中锯齿状边缘(也称为走样)的技术。MSAA 是一种抗锯齿技术,通过在图像渲染过程中对多个采样点进行颜色混合,以缩小锯齿状边缘的呈现。
咱们要求 Flutter 开发者降级到最新的稳固版本,并在启用 Impeller 时报告任何察看到的不足之处。在这个阶段的反馈对于确保 Impeller 在 Android 上胜利,并且咱们能够自信地在往年晚些时候的公布中将其作为默认渲染器十分贵重。Android 硬件生态系统比 iOS 生态系统更加多样化。因而,对于 Impeller 的最有帮忙的反馈应包含无关呈现问题的具体设施和 Android 版本的详细信息。
https://docs.flutter.dev/perf/impeller#android
此外,作为揭示,Impeller 的 Vulkan 后端在调试构建中提供了比 Skia 更多的调试能力,并且这些能力会减少额定的运行时开销。因而,从配置文件或公布构建中提供无关 Impeller 性能的反馈十分重要。错误报告应包含来自 DevTools 的工夫线,并与同一设施上的 Skia 后端进行比拟。最初,判若两人,咱们非常感谢蕴含一个可能演示问题的小型可重现测试案例的反馈。
https://docs.flutter.dev/testing/build-modes#profile
https://docs.flutter.dev/testing/build-modes#release
Roadmap 路线图
https://github.com/flutter/flutter/wiki/Roadmap
在提供高保真度的渲染后,咱们在 Impeller 的 Android 预览期间的次要关注点是性能。咱们继续进行渐进式的改良,但也有一些较大的改良正在进行中。咱们预计通过利用 Vulkan 子通道来大大提高高级混合模式的性能。此外,咱们还预计从在 CPU 上始终对每个门路进行细分的渲染策略转向先应用模板再笼罩的办法,将大大减少 Impeller 在 Android 和 iOS 上的 CPU 利用率。最初,咱们预计新的高斯含糊实现将与 Skia 实现的吞吐量相匹配,并改善在 iOS 上应用含糊的习用形式。
https://github.com/flutter/flutter/issues/128911
https://github.com/flutter/flutter/issues/137714
https://github.com/flutter/flutter/issues/131580
API improvements 改良
Glyph Information 字形信息
此版本蕴含 dart:ui
的 Paragraph
对象上的两个新办法:getClosestGlyphInfoForOffset
和 getGlyphInfoAt
,每个办法返回一个新类型 GlyphInfo
的对象。请查看无关新 GlyphInfo
类型的文档。
GPU tracing 追踪
在 Metal(iOS、macOS、模拟器)和反对 Vulkan 的 Android 设施上,Flutter 引擎当初在调试和性能剖析版本中在时间轴上报告每帧的 GPU 工夫。能够在 DevTools 中的“GPUTracer”题目下查看 GPU 帧工夫。
请留神,因为非 Vulkan Android 设施可能谬误地报告其对查问 GPU 计时的反对,因而在这些设施上,只能通过在 AndroidManifest.xml
文件中设置标记来启用 Impeller 的 GPU 跟踪性能。
<meta-data
android:name="io.flutter.embedding.android.EnableOpenGLGPUTracing"
android:value="true" />
Performance optimizations 性能优化
Specialization constants 专业化常数
团队为 Impeller 增加了对业余常量的反对。利用 Impeller 的着色器中的这一个性,缩小了 Flutter 引擎未压缩二进制文件的大小近 350KB。
https://github.com/flutter/flutter/issues/119357
https://flutter-flutter-perf.skia.org/e/?begin=1698877815&end…
Backdrop filter speedups 背景滤镜减速
然而,还有很多工作要做,然而这个版本包含了一些对 Impeller 的背景滤镜和含糊成果的良好性能改良。特地是,开源贡献者 @knopp 留神到 Impeller 谬误地申请从屏幕纹理中读取的能力。移除了这个能力后,依据复杂程度,咱们的基准测试显示,蕴含多个背景滤镜的场景的性能晋升了 20-70%。
此外,Impeller 不再无条件地在每个背景滤镜上存储模板缓冲区。相同,任何影响操作的剪辑都会被记录下来,并在复原背景滤镜的保留层时从新播放到新的模板缓冲区中。
https://github.com/flutter/engine/pull/47397
通过这个扭转,咱们在应用 Vulkan 后端的 Pixel 7 Pro 上运行 Impeller 时,对于动画高级混合模式的基准测试,均匀 GPU 帧工夫从 55 毫秒晋升到 16 毫秒,并且将 90% 的光栅线程 CPU 工夫从大概 110 毫秒升高到 22 毫秒。
Android 安卓
Deeplinking web validator 深度链接网页验证器
咱们从开发者那里理解到,深度链接(将用户从网页 URL 导航到挪动应用程序的特定页面)始终很难实现,而且容易出错。因而,咱们首先创立了一个验证工具,以帮忙开发者理解哪些链接配置不正确,并提供施行领导。咱们非常高兴地分享,Flutter 深度链接验证器的晚期版本现已可用!
在这个晚期版本中,Flutter 深链接验证器反对在 Android 上进行 Web 查看,这意味着验证您的 assetlinks.json
文件的设置。您能够关上 DevTools,点击进入 Deep Links 选项卡,并导入一个蕴含深链接的 Flutter 我的项目。深链接验证器会告诉您您的 Web 文件是否配置正确。您能够参考深链接验证工具的测试阐明获取更多信息。
https://docs.google.com/document/d/1fnWe8EpZleMtSmP0rFm2iulqS…
咱们心愿这个工具是简化您的深度链接施行过程的第一步。咱们将持续致力提供对 iOS 上的网页检查和对 iOS 和 Android 上的利用查看的将来反对!
Support for Share.invoke 反对
文本字段和视图上的默认共享按钮在 Android 上以前是缺失的,但咱们在这个版本中增加了它,作为咱们继续致力的一部分,以确保每个平台上都有所有默认上下文菜单按钮。您能够在 PR#107578 中跟踪这个继续的工作。
https://github.com/flutter/flutter/issues/107578
Native assets feature 本地调用
如果您对 Flutter 与其余语言的函数在 Flutter 代码中的互操作性感兴趣,您当初能够通过 Android 上的本地资源执行 FFI 调用,这是咱们反对本地资源的继续工作的一部分。
https://github.com/flutter/flutter/issues/129757
Texture Layer Hybrid Composition (TLHC) mode 纹理层混合组合
Flutter 3.19 蕴含了使谷歌地图和文本输出放大器在 TLHC 模式下工作的性能,这意味着您的应用程序性能更好。如果您正在应用谷歌地图,请测试这些更改并通知咱们您的反馈!
这项工作不包含框架或引擎的提交,但您能够在 PR 5408 中看到该工作,以及测试 THLC 的步骤。
https://github.com/flutter/packages/pull/5408
Custom system-wide text selection toolbar buttons 自定义零碎范畴的文本抉择工具栏按钮
Android 应用程序能够增加自定义文本抉择菜单项,这些菜单项会呈现在所有文本抉择菜单中(即长按文本时呈现的菜单)。Flutter 的 TextField
抉择菜单当初蕴含了这些我的项目。
iOS
Flutter iOS native fonts Flutter iOS 原生字体
Flutter 的文本在 iOS 上看起来更加紧凑和本地化。依据苹果的设计指南,iOS 上的较小字体应该更加扩散以便在挪动设施上更容易浏览,而较大字体应该更加紧凑以节俭空间。以前,咱们在所有状况下谬误地应用了较小、更扩散的字体。当初,默认状况下,Flutter 将对较大的文本应用紧凑字体。
DevTools 开发工具
DevTools updates 开发工具更新
这个版本的 DevTools 的一些亮点是:
- 在 DevTools 中增加了一个新性能和屏幕,用于验证 Android 上的深度链接设置。
- 在加强跟踪菜单中增加了一个选项,用于跟踪平台通道流动。这对于带有插件的应用程序十分有用。
- 当没有连贯的应用程序时,当初能够使用性能和 CPU 分析器屏幕。之前从 DevTools 保留的性能数据或 CPU 配置文件能够从这些屏幕从新加载以供查看。
- Flutter 侧边栏在 VS Code 中当初具备启用新平台的性能(如果以后我的项目未启用),并且侧边栏中的 DevTools 菜单当初有一个选项能够在内部浏览器窗口中关上 DevTools。
要理解更多信息,请查看 DevTools 的公布阐明,包含, 2.29.0, 2.30.0, 和 2.31.0。
Desktop 桌面
Windows Arm64 support Windows Arm64 反对
Flutter 在 Windows 上当初开始反对 Arm64 架构,这要归功于社区成员 @pbo-linaro 的可赞叹的致力。这项初步反对为在 Windows Arm64 设施上本地运行的 Flutter 应用程序提供了更高效和更高性能的形式。只管仍在开发中,但能够在 GitHub 问题 #62597 上跟踪停顿,这一动作意味着对于心愿优化其应用程序以适应更宽泛的 Windows 设施的 Flutter 开发人员来说,这是一个有心愿的加强。
https://github.com/flutter/flutter/issues/62597
Ecosystem 生态系统
Required reason privacy manifest 所需的起因隐衷清单
Flutter 当初在 iOS 上蕴含了一个隐衷清单,以满足行将到来的苹果要求。
https://developer.apple.com/support/third-party-SDK-requireme…
Progress of the Flutter and Dart package ecosystem 生态系统的停顿
如果你错过了,能够查看一月份对于 Flutter 和 Dart 软件包生态系统停顿的博客文章。
https://medium.com/flutter/progress-of-the-flutter-package-ec…
Deprecations and breaking changes 弃用和破坏性变更
Dropping Windows 7 and 8 support 放弃对 Windows 7 和 8 的反对
随着 Flutter 的倒退,咱们很快乐通过 Dart 3.3 和 Flutter 3.19 版本的公布来关注最新的技术,完结对 Windows 7 和 8 的反对。这一转变与微软的策略统一,使咱们可能加强在古代操作系统上的 Flutter。咱们感激开发者所需的调整,并致力于在这个过渡期间为您提供帮忙。这一动作为在反对的 Windows 版本上打造一个更平安、高效和功能丰富的开发环境铺平了路线。感谢您的了解和适应能力,让咱们在 Flutter 生态系统中持续独特翻新。
Impeller dithering flag
正如 3.16 稳固版本的公布阐明中所提到的,全局标记 Paint.enableDithering
已被移除。无关详细信息,请参阅网站上的重大变更布告。
https://github.com/flutter/engine/pull/46745
https://docs.flutter.dev/release/breaking-changes/paint-enabl…
Deprecate iOS 11 废除
因为在调用某些网络 API 时产生运行时解体,Flutter 不再反对 iOS 11。这意味着应用 Flutter 3.16.6 及更高版本构建的应用程序将无奈在这些设施上运行。
https://github.com/flutter/flutter/issues/136060
Deprecate auto render mode 废除主动渲染模式
此版本中的重大变更包含在 v3.16 公布后过期的已弃用 API。要查看所有受影响的 API 以及其余上下文和迁徙指南,请参阅此版本的弃用指南。其中许多弃用性能都受到 Flutter 修复程序的反对,包含 IDE 中的疾速修复。批量修复能够应用 dart fix
命令行工具进行评估和利用。
https://docs.flutter.dev/release/breaking-changes
https://docs.flutter.dev/release/breaking-changes/3-16-deprec…
https://docs.flutter.dev/tools/flutter-fix
判若两人,非常感谢社区为咱们奉献的测试,这些测试有助于咱们辨认这些破坏性变更。要理解更多信息,请查阅 Flutter 的破坏性变更政策。
https://github.com/flutter/tests/blob/master/README.md
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
这是第一个采纳 flutter_driver 包的公布版本,除了已反对的 flutter 和 flutter_test 包之外,还采纳了弃用策略。
Conclusion 论断
正如咱们在这个布告的结尾强调的那样,咱们这样做是有目标的。Flutter 的倒退成为一个弱小高效的工具包,直接证明了咱们令人难以置信的社区的贡献和辛勤工作。衷心感谢每一个人。
要深刻理解此版本所获得的具体成绩,咱们邀请您查看 Flutter 3.19 的公布阐明和变更日志,以获取残缺的新增内容列表。
https://docs.flutter.dev/release/release-notes/release-notes-…
Flutter 3.19,与 Dart 3.3 一起,现已在稳固通道上可用。开始应用 Flutter 的最新版本就像运行 flutter upgrade 一样简略。
https://medium.com/dartlang/new-in-dart-3-3-extension-types-j…
感激浏览本文
如果有什么倡议,请在评论中让我晓得。我很乐意改良。
flutter 学习门路
- Flutter 优良插件举荐
https://flutter.ducafecat.com - Flutter 根底篇 1 – Dart 语言学习
https://ducafecat.com/course/dart-learn -
Flutter 根底篇 2 – 疾速上手
https://ducafecat.com/course/flutter-quickstart-learn
-
Flutter 实战 1 – Getx Woo 电商 APP
https://ducafecat.com/course/flutter-woo
- Flutter 实战 2 – 上架指南 Apple Store、Google Play
https://ducafecat.com/course/flutter-upload-apple-google - Flutter 根底篇 3 – 仿微信朋友圈
https://ducafecat.com/course/flutter-wechat - Flutter 实战 3 – 腾讯 tim 即时通讯开发
https://ducafecat.com/course/flutter-tim
© 猫哥
ducafecat.com
end