ToB企服应用市场:ToB评测及商务社交产业平台

标题: Flutter 3.22 发布,快来看看有什么更新吧? [打印本页]

作者: 王海鱼    时间: 2024-6-15 02:35
标题: Flutter 3.22 发布,快来看看有什么更新吧?
Flutter 3.22 发布,快来看看有什么更新吧?

本次 Flutter 跟随 Google I/O 发布的版本是 3.22 ,该版本重要还是带来了 Vulkan backend 和 Wasm Native 的落地,另外还有一个重点就是 Dart macros ,但是它更多只是一个预览作用,那么就让我们来快速看看究竟有什么更新吧。
Dart macros

Dart 宏开辟终于千呼万唤始出来,固然他不完全属于 Flutter 更新,但是感觉有必要在这里提一下,究竟在之前的 《Dart 宏(Macros)编程开始支持,JSON 序列化有救》 大家就对这个功能的等待很高。

本次发布的 JsonCodable 作为一种用于 JSON 序列化和反序列化的全新方法预览,它可以通过在编译时内省其他代码来天生更多代码,这算是 Dart 宏编程的第一个切入点实现。
  1. @JsonCodable()
  2. class Vehicle {
  3.   final String description;
  4.   final int wheels;
  5.   Vehicle(this.description, this.wheels);
  6. }
  7. void main() {
  8.   final jsonString = Vehicle('bicycle', 2).toJson();
  9.   print('Vehicle serialized: $jsonString');
  10. }
复制代码
对于宏支持,Dart 团队也考虑未来在 Dart 中添加对数据类的内置支持,这是一项长久的使命,现在正在按照阶段的落地:

   JsonCodable 宏现在还不稳定,处于实验性阶段,仅实用于 Dart 3.5.0-152或更高版本,更多可见:https://dart.dev/go/json-codable
  WebAssembly

正如前面 《Flutter Web 的未来,Wasm Native 即将到来》 先容过的那样,Flutter 的 Wasm Native 在 3.22 开始正式落地,现在 Wasm 现在已经可以在 stable 上利用,在测试中可以体验到显着的性能提拔。

   官方在 M1 MacBook 上利用 Chrome 进行内部基准测试时,其中 Wonderous 应用的帧渲染时间均匀提高了 2 倍,在最坏环境下提高了 3 倍。
  Wasm Native 加强功能对于具有动画和页面过渡结果的应用提拔明显,特殊是保持平滑稳定的帧率,而 Wasm Native 是通过减少性能瓶颈来实现这个结果。
在 Flutter 3.22 开始,运行 flutter build web --help 就可以看到:
  1. Experimental options
  2.     --wasm                       Compile to WebAssembly (with fallback to JavaScript).
  3.                                  See https://flutter.dev/wasm for more information.
  4.     --[no-]strip-wasm            Whether to strip the resulting wasm file of static symbol names.
  5.                                  (defaults to on)
复制代码
通过 flutter build web --wasm 即可构建 Wasm Native 的 Flutter 应用,

固然,作为第一版的 WebAssembly 支持,现在还存在一些限定,比方:
Engine

Flutter 3.22 下, Impeller 在 Android 上完成 Vulkan backend 支持和性能改进,对模糊结果和复杂路径渲染的进行了优化,以及利用 Impeller 的新实验性 API,包括有:

Android

在 3.19 的时间发布了 Impeller OpenGL backend 改进后,团队工作的重点切换到了 Vulkan backend 支持上,其中包括解决了 Impeller 着色器编译卡顿的题目,现在测试认为 Vulkan backend 在 Android 上的性能是可以接受的,以是在 3.22 开始加入 了 Impeller 的对 Vulkan backend 的选项支持。
   在未来的版本中,Impeller Vulkan backend 也会成为 Android 的的默认设置,固然,对于在不支持 Vulkan 的装备上运行时,Flutter 将自动优雅地回退到利用 OpenGL ES 和 Skia。
  现在你可以通过 flutter run --enable-impeller 或者通过如下配置启动 Impeller Vulkan :
  1. <meta-data
  2.     android:name="io.flutter.embedding.android.EnableImpeller"
  3.     android:value="true" />
复制代码
对于 Flutter 来说这是大趋势,比方今年的 2024 Roadmap 里也提到了:今年 Flutter Team 将计划删除 iOS 上的 Skia 的支持,从而完成 iOS 到 Impeller 的完全迁移
Blur 性能改进

Blur 渲染在 3.22 已在 iOS 和 Android 的 Impeller 中被重新实现#47576,在和 Skia 对比的基准测试里将 Blur 的 CPU 和 GPU 时间利用减少了将近一半。

   上图显示了 iPhone 11 装备上最坏环境、在重写 Impeller 的模糊后,背景滤镜模糊的 CPU 和 GPU 成本几乎减半。
  Stencil-then-Cover

iOS 和 Android 上的 Impeller 已经转向(#51219) 基于 Stencil-then-Cover 方法的新渲染策略,如 OpenGL Redbook 里的 “Drawing Filled, Concave Polygons Using the Stencil Buffer” ,更多可见#123671。
这个实现重要解决了「光栅线程耗费过多时间计算 CPU 上复杂路径」,如 SVG 和Lottie 动画的曲面细分的题目,从 3.22 开始,对于包含复杂路径的帧,总帧时间(CPU 上的 UI 线程 + CPU 上的光栅线程 + GPU 工作)会低很多,用户会注意到 Lottie 动画和其他复杂路径渲染更加流畅,CPU 利用率变低,GPU 利用率变高等环境。

Framework

本次 Framework 重要包含了一些 API 调解和优化,并没有什么大更新:

Android

Deep linking

在 3.19 中, DevTools 中引入了 Deep linking 验证器工具,支持查抄 Android 应用的 Web 配置,而 3.22 版本里添加了一组新功能来帮助验证 Android 清单文件中的设置。

猜测返回手势

3.22 增长了对 Android 猜测返回手势的更多支持,用户可以在返回手势期间检察之前的门路,甚至是之前的应用。

  1. return MaterialApp(
  2.   theme: ThemeData(
  3.     brightness: Brightness.light,
  4.     pageTransitionsTheme: const PageTransitionsTheme(
  5.       builders: {
  6.         // Use PredictiveBackPageTransitionsBuilder to get the predictive back route transition!
  7.         TargetPlatform.android: PredictiveBackPageTransitionsBuilder(),
  8.       },
  9.     ),
  10.   ),
  11.   home: const MyApp(),
  12. );
复制代码
  更多可见:https://github.com/flutter/flutter/issues/132504#issuecomment-2025776552
  环境版本要求

3.22 开始 Flutter 工具欺压执行有关支持的 Gradle、Android Gradle 插件 (AGP)、Java 和 Kotlin 版本的策略,现在该工具仅提供警告,支持的版本范围如下:

而在下一个重要版本中,这些警告会酿成错误,可以利用 --android-skip-build-dependency-validation 标记覆盖。
支持 Gradle Kotlin DSL

Flutter 现在支持 Gradle Kotlin DSL,这种支持可以带来更好的代码编辑体验,包括自动完成、快速访问文档、源代码导航和上下文感知重构。
更多可见:https://github.com/flutter/flutter/pull/140744
PlatformView 改进

由于 Android 14 本身系统 API 的错误,利用旧版本 Flutter 构建的应用大概会无法正常渲染,在之前的 《2024 Flutter 一季度热门 issue》 里先容过相干题目,大概就是:
   PlatformView 在内存修剪时,由于会停止从 Android 获取绘制信息,从而导致底层视图固然存在而且可以交互,但是平台视图会出现透明的环境
  Flutter 3.22 修复了这个题目,并提高了 Android 应用中这些 native 组件的整体性能,而且此更新还包括 behind-the-scenes,让 Android 上的 PlatformView 整体更加可靠。
终止对 KitKat 的支持

Flutter 支持的最低 Android 版本现在是 Lollipop (API 21),从 Flutter 3.22 稳定版开始,Flutter 将不再在运行 Android KitKat (API 19) 的装备上运行。
iOS

PlatformView 性能

iOS 上的 PlatformView 性能不停是很多 Flutter 开辟职员的痛点,当利用 PlatformView 时,这在滚动列表中题目尤其明显, 3.22 的更新直接解决了这些题目,特殊是在嵌入多个广告等场景进行了巨大改进,在基准测试中:



生态

Vertex AI for Firebase Dart SDK 预览版

Vertex AI for Firebase 产品已发布预览版,并包含 Dart SDK,Flutter 开辟者现在可以更方便利用 Gemini API ,该 SDK 与 Firebase App Check 集成。

原生的 Google AI Dart SDK仍然可利用,但建议仅用于原型计划,如果你已利用 Google AI Dart SDK 进行原型计划,并预备迁移到 Vertex AI for Firebase.
   迁移指南:https://firebase.google.com/docs/vertex-ai/migrate-to-vertex-ai?platform=flutter
  开辟工具更新

3.22 包括了性能改进、总体改进和新功能,比方在时间线中包含 CPU 示例、高级过滤以及对导入和导出内存快照的支持。
另外 devtools_app_shared 添加了对将扩展连接到新的 Dart Tooling Daemon (DTD) 的支持,答应 DevTools 扩展访问由其他 DTD 客户端(比方 IDE)注册的公共方法,并答应访问最小文件系统 API 以与开辟项目。
更多可见:https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.34.1
实用于 Flutter 的 Google 移动广告 SDK

Google Mobile Ads for Flutter 刚刚发布了版本 5.0.1 的巨大更新,嗯,就这样。
巨大变更和弃用

ColorScheme.fromSeed

如果 seedColor 利用的 ColorScheme.fromSeed 色度值较高,则 ColorScheme 大概会产生缺乏活力的柔和调色板,为了确保输出颜色与 Seed 颜色的预期感觉紧密匹配,请考虑设置 dynamicSchemeVariant 为 DynamicSchemeVariant.fidelity 或 DynamicSchemeVariant.content ,这些选项天生的调色板与原始 Seed 颜色更加同等。
删除 v1 Android embedding

计划在下一个版本中完全删除 v1 Android embedding,届时包含具有此签名的方法的插件将不再编译(由于它引用 v1 android embedding中的类型)。
最后

总的来说,这个版本没有什么巨大更新,如果要说比较大的变革,应该就是 Android 可以体验到比较好的 Impller 渲染,另外 Wasm Native 正式落地也算是一大变动,不外按照其计划理念,想要完全铺开估计路还远着,还有Dart 宏支持算一个,不外还没正式落地。
另外这次还是没有 PC 的多窗口,具体缘故原由可见 :https://blog.csdn.net/ZuoYueLiang/article/details/138561394 。
那么,勇士们,是时间开始吃螃蟹了~。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4