本次 Flutter 2.2 正式版主要着重于优化:包括 iOS 性能改进,Android 延迟加载组件,针对 Flutter Web 的更新等等
每个 Flutter 新稳定版本的发布都会带来一些更新,无论是性能增强、新功能还是错误修复,尽管 Flutter 2 才发行了两个月,但 2.2 依旧在 Flutter 2 的基础上做了很多改进,**该版本合并了 2456 个 PR,涉及 Framework、 engine 和 plugins 的 issue 关闭了 3105 个 **。
Flutter 2.2 更新稳定
此版本在 Flutter 2 之上进行了大量的改进,包括 Android,iOS 和 Web 上的更新,如新的Material
图标,文本处理,滚动条行为的更新以及对 TextSpan
控件的鼠标光标支持。
Dart 2.13
Flutter 2.2 包含了 Dart 2.13 版本,此 Dart 更新主要包含一个新的类型别名功能,使开发者能够为类型和函数创建别名:
// Type alias for functions (existing)
typedef ValueChanged = void Function(T value);
// Type alias for classes (new!)
typedef StringList = List;
// Rename classes in a non-breaking way (new!)
@Deprecated(“Use NewClassName instead”)
typedef OldClassName = NewClassName;
使用类型别名可以为复杂的长类型提供“漂亮”的短名称,还可以让开发者以连续的方式重命名类。
更多 dart 2.13 内容 :medium.com/dartlang/an…
Flutter Web 更新
Flutter Web 作为 Flutter 最新的稳定平台,Web 在此版本中做了很多的改进。
首先,使用新的 service 加载机制优化了缓存行为,并修复了的重复下载 main.dart.js
的问题。
在 Flutter Web 的早期版本中,后台在更新下载到应用程序后,用户不刷新浏览器是不会看到这些更改,而从 Flutter 2.2 开始,当检测到更改时用户可以直接看到更新,而无需再次手动刷新页面。
启用此更改要求重新生成 Flutter 应用的
index.html
,所以你可以先保存index.html
里的修改,然后删除index.html
文件,再通过flutter create .
在项目目录中运行从而重新创建它。
Flutter 2.2 还对两个 Web 渲染器进行了改进:
-
对于 HTML 添加了对字体功能的支持,启用设置
FontFeature
以及使用画布 API 渲染文本,以便在悬停时将其显示在正确的位置。 -
对于 HTML 和 CanvasKit都添加了
computeLineMetrics
和对着色器蒙板的支持,以解决 Flutter Web 和移动应用程序之间的差距,例如:开发人员现在可以使用不透明蒙板,使用着色器蒙板执行淡出过渡,并使用computeLineMetrics
像在移动应用程序中一样使用。
对于 Flutter Web 而言,Semantics
是的首要任务之一, Flutter 通过构建SemanticsNode
树来实现可访问性。Flutter Web 用户启用 Semantics
后,框架将生成与 DOM
树平行的 RenderObjectDOM
树,并将语义属性转换为 Aira
。
在此版本中改进了语义节点的位置,以缩小使用转换时移动和桌面 Web 应用程序之间的距离,这意味着在使用转换为 Widget
设置样式时,焦点框应正确显示在元素上。
我们还在配置文件和发布模式下使用命令行标志公开了语义节点调试树,以