原文链接:https://medium.com/flutter/whats-new-in-flutter-2-10-5aafb0314b12

欢迎来到 Flutter 2.10 稳定版本的更新,自上次发布至今还不到两个月,但即使在这么短的时间内,Flutter 2.10 也关闭了 1,843 个 issues,合并了来自全球 155 位贡献者的 1,525 个 PR,所以非常感谢大家这段时间出色的工作,尤其是在 2021 年假期期间。

作为此版本的重要组成部分,这里有几件令人兴奋的事情要宣布,包括:

  • Flutter 对 Windows 支持的重大更新;
  • 一些关于性能方面的重大改进;
  • 关于对框架中图标和颜色相关的新功能支持;
  • 一些开发工具方便的改进;

此外还有一些关于移除 dev channel 的更新、减少对旧版 iOS 的支持以及简短的重要变更列表等等

为 Windows 上的生产应用做好准备

首先,Flutter 2.10 版本给我们带来了稳定版本的 Windows 支持,现在开发者可以不再通过设置 flag 来启用 Windows 的支持,因为在 Flutter 2.10 上现在默认支持编译生成 Windows 应用

当然,此版本还包括对文本处理、键盘处理和键盘快捷键相关的改进,以及更好地和 Windows 进行集成,支持命令行参数,全球化多语言文本输入和辅助功能等等。

有关 Windows 稳定版发布的更多信息,请参阅Flutter for Windows 博客文章,该文章描述了 Flutter 在 Windows 上的架构实现,让你了解目前有多少 Flutter 包和插件已经支持 Windows,你还可以查看我们的工具和应用合作伙伴在 Windows 上使用 Flutter 所做的一些 Demo!

性能改进

Flutter 2.10 包括了对 Flutter 社区成员 knopp 所提供的脏区管理支持,他为 iOS/Metal 上的单个脏区域启用了部分重绘的支持,在基准测试中这一变动降低了 90% - 99% 的光栅化时间,并将 GPU 利用率从 90% 以上降低到 10% 以下。

我们希望在未来的版本中将这部分重绘带到来的好处支持到其他平台。

在 Flutter 2.8 版本中,我们发布了自己的 picture recording format,现在 Flutter 2.10 中我们开始使用它进行功能优化,例如现在 Flutter 可以更简单地实现 opacity layers,即使在最坏的情况下,基准测试中的帧光栅时间也下降到了之前的三分之一以下。

随着我们继续开发 picture recording format ,预计这些优化可以将扩展到更多的场景。

在 profile 和 release 模式下,Dart 代码会提前编译为 native 代码,这里面提高性能和降低其大小的关键在于整个程序的 type flow 分析,它解锁了许多编译器优化和激进的 tree-shaking。

但是由于 type flow 分析必须涵盖整个程序,因此开销可能会有些昂贵,所以此版本增加了更快的 type flow 分析实现,在我们的基准测试中,Flutter 应用程序的总体构建时间下降了约 10%

与往常一样,增强性能、减少内存使用和减少延迟是 Flutter 团队的首要任务,期待未来版本的进一步改进。

iOS 更新

除了性能改进之外,我们还添加了一些特定平台的增强功能,其中一项新增的功能是来自luckysmg的 iOS 中更流畅的键盘动画,它会默认被应用于你的 App 而无需你做任何事情。

我们还通过修复一些边缘条件下崩溃的情况来提高了 iOS 相机插件的稳定性。

最后,通过压缩指针使得 64 位的 iOS 架构可以减少内存的使用

64 位架构将指针表示为 4 字节的数据结构,当你有很多对象时,指针本身占用的空间会增加 APP 的整体内存使用量,特别是如果你的 App 规模比较庞大和复杂的时候,会导致更多的 GC 流失,但是 iOS App 很大一部分不太可能有对象需要占用 32 位地址空间(20 亿个对象),更不用说庞大的 64 位地址空间(900 亿个对象)了。

Dart 2.15 中提供了压缩指针,在这个 Flutter 版本中,我们使用它们来减少 64 位 iOS 应用程序的内存使用量,您可以查看 Dart 2.15 博客文章来了解详细信息。

在阅读 Dart 博客文章时,不要忘记查看 Dart 2.16 的公告,了解有关支持 Flutter for Windows 的更新,包括包平台标记和 pub.dev 上的新搜索体验。

安卓更新

此版本还包含许多针对 Android 的改进。

默认情况下当创建新应用时,Flutter 会默认支持最新版本的 Android 12 版本 (API 级别 31),此外,在此版本中我们自动启用了multidex支持

如果您的应用支持低于 21 的 Android SDK 版本,并且超过了 64K 方法限制,只需将--multidex 标志传递给 flutter build appbundle 或者 flutter build apk 就可以让你的应用支持 multidex。

最后,Flutter 工具现在会在 Gradle 发生错误时提供常见的问题解决步骤,例如如果在应用中添加了一个插件,需要你提高最低 Android SDK 版本时,你现在会在日志中看到 “Flutter Fix” 建议。

Web 更新

此版本同样包含对 Web 的一些改进。

例如在以前的版本中,在 Web 上滚动多行的 TextField 到边缘时它不会正确滚动,而在 Flutter 2.10 下 edge scrolling for text selection 支持当选中滚动超过 TextField 的范围时,内容依然可以继续正常滚动,改更新适用于 Web 和桌面应用。

此外 Flutter 还包括对 Web 的另一项显着改进:减少将 Flutter 映射到 Web 的开销。

在以前的版本中,每次我们想要将原生的 HTML 控件引入 Flutter 应用时,我们都需要一个 overlay 作为我们对 Web 的平台视图的支持,这些叠加层中的每一个都支持自定义绘制,但也代表着一定数量的开销。

如果你的应用中有大量原生 HTML 小部件(例如 links),则会因此增加大量性能开销。在这个版本中,我们为 Web 创建了一个新的“non-painting platform view”,基本上消除了这种开销

我们已经在 Link 控件 中利用了这种优化,这意味着如果你的 Flutter Web 应用程序中有很多 Link,它们不会再有任何重大开销,而随着时间的推移,我们会将此优化应用到其他控件上。

Material 3

Flutter 2.10 版本是向 Material 3 过渡的开始,其中包括从 single seed color 生成整个配色方案的能力。

你可以使用使用任何颜色构造 ColorScheme 实例:

final lightScheme = ColorScheme.fromSeed(seedColor: Colors.green);
final darkScheme = ColorScheme.fromSeed(seedColor: Colors.green, brightness: Brightness.dark);

ThemeData 其 factory 构造函数还有一个新的 colorSchemeSeed 参数,可生成主题的配色方案:

final lightTheme = ThemeData(colorSchemeSeed: Colors.orange, …);
final darkTheme = ThemeData(colorSchemeSeed:Colors.orange, brightness: Brightness.dark, …);

此外,此版本包括还包含了 ThemeData.useMaterial3 标识位,它用于将组件切换到新的 Material 3 外观支持。

最后,我们添加了1,028 个新的 Material 图标

集成测试改进

2020 年 12 月 开始我们宣布了一种使用 integration_test 包进行端到端测试的新方法,这个新包取代了 flutter_driver 包作为进行集成测试的推荐方式,提供了如 Firebase Test Lab对 Web 和桌面端的支持。

从那时起我们对集成测试进行了进一步的改进,包括将 integration_test 包捆绑到 Flutter SDK 本身中,使其更容易与开发者的应用进行集成。

如果你想将现有的 flutter_driver 测试移动到 integration_test,可以参考迁移指南:https://docs.flutter.dev/testing/integration-tests/migration

Flutter 开发工具

在这个版本中我们也对 Flutter DevTools 做了一些改动,包括更便捷地从命令后使用 DevTools,现在可以直接通过 dart devtools 去会下载和执行更新版本而不是使用pub global activate

我们还进行了许多关于可用性 的更新 其中包括改进了变量窗格中检查大型列表和映射的支持(感谢elliette)。

VSCode 改进

Flutter 的 Visual Studio Code 扩展也获得了许多增强功能,包括代码中更多位置的颜色预览更新代码的颜色选择器

此外,如果你想成为 VSCode 的 Dart 和 Flutter 扩展插件的预发布版本的测试人员,可以在扩展设置中切换到预发布版本。

删除开发通道

在Flutter 2.8 版本 已经宣布我们正在努力移除 dev channel,从而简化开发者的选择并移除工程开销,而在这个版本中我们已经完成了这项工作,包括:

  • 更新了 Flutter 工具以帮助将开发人员迁移出 dev channel
  • 更新了 wiki 以反映更新
  • 更新了弃用政策
  • 从 DartPad、预提交测试和网站中删除了dev channel支持

对 iOS 9.3.6 的不再支持

由于实验室中目标设备的使用减少和维护难度增加,现在将对iOS 9.3.6的支持从“支持”层转移到“尽力而为”层,这意味着对 iOS 9.3.6 的支持和对 32 位 iOS 设备的支持将仅通过临时修复和社区测试来维持。

https://docs.flutter.dev/development/tools/sdk/release-notes/supported-platforms)

在 2022 年第三季度的稳定版本中,我们预计从 Flutter 稳定版本中放弃对 32 位 iOS 设备以及 iOS 版本 9 和 10 的支持,这意味着在那之后基于稳定的 Flutter SDK 构建的应用将不再在 32 位 iOS 设备上运行,并且 Flutter 支持的最低 iOS 版本将增加到 iOS 11

重大变化

  • 所需的 Kotlin 版本:https://docs.flutter.dev/release/breaking-changes/kotlin-version
  • 在 v2.5 之后删除了已弃用的 API:https://docs.flutter.dev/release/breaking-changes/2-5-deprecations)
  • Web 上的原始图像使用正确的来源和颜色:https://docs.flutter.dev/release/breaking-changes/raw-images-on-web-uses-correct-origin-and-colors
  • Scribble Text Input Client:https://docs.flutter.dev/release/breaking-changes/scribble-text-input-client

如果你仍在使用这些 API,可以阅读 flutter.dev 上的迁移指南,与往常一样,非常感谢社区提供的测试,帮助我们识别这些重大变化。

Flutter 2.10 正式发布,包含 Windows 平台正式版,快来看看有什么新内容相关推荐

  1. iOS 11 正式版发布,都有哪些新内容?

    北京时间 9 月 20 日凌晨 1 点,苹果正式发布了下一代全新操作系统 iOS 11.此外本次的更新也意味着 iOS 彻底与 32 位 App 说了再见. 哪些设备可以畅通无阻地使用 iOS 11 ...

  2. Windows 11正式版将于10月5日推出,说好的支持安卓App没上车

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 距6月24日Windows 11首次与大众见面已经过去了两个月多. 体验过预览版的人觉得如何? 还没体验过的也不要着急,微软刚刚宣布:Win ...

  3. Windows 11 正式版最低配置要求来了,你的电脑支持吗?

    整理 | 孙胜 出品 | CSDN(ID:CSDNnews) 10月5日,微软开始正式推送Windows 11. "让用户与之所爱,更近一步." 这是微软日前官宣Windows 1 ...

  4. Windows 11正式版终于发布,最低配置要求来了

    整理 :孙胜| 来源:CSDN(ID:CSDNnews) 今天,微软开始正式推送Windows 11. "让用户与之所爱,更近一步." 这是微软日前官宣Windows 11正式推送 ...

  5. 操作系统:升级Windows 11正式版的四种方法,值得收藏!

    距离 Windows 11 预览版测试已经过去近四个半月. 终于,在 10 月 5 日,微软的 Windows 11  正式版操作系统全面上市. Win11 的正式上线,打破了微软在 Win 10 刚 ...

  6. 如何升级Windows 11正式版?四种方案都在这里了

    距离 Windows 11 预览版测试已经过去近四个半月. 终于,在 10 月 5 日,微软的 Windows 11 正式版操作系统全面上市. Win11 的正式上线,打破了微软在 Win 10 刚发 ...

  7. 全新发布,Windows 11 正式版正式推送

    文章整理自快科技 如此前预告,微软官方宣布,Windows 11正式版于美国时间(10月5日)全面上市. 微软表示,10月5日标志着Windows历史上一个激动人心的里程碑.随着世界各地各个时区10月 ...

  8. 3月更新来了!Windows 11正式版22000.556发布

    面向 Windows 11 正式版用户,微软现已发布累积更新 KB5011493,更新后版本号升级至 Build 22000.556. 主要变化 1.微软正在改变 Windows 11 "开 ...

  9. 升级了 Windows 11 正式版,有坑吗?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 今天磊哥去公司上班,惊喜的发现 Windows 提示更新了,并且是 Windows ...

  10. Windows 11 正式版 ISO 镜像下载大全

    Windows 11 ISO 镜像规格 1.Windows 11 中文版 文件大小:5.13 GB 系统类型:64 位操作系统 版本号:Windows 11 21H2 发布日期:2021 年 10 月 ...

最新文章

  1. mvc手把手教你写excel导入
  2. LeetCode Populating Next Right Pointers in Each Node(dfs)
  3. 程序员--文件格式大全
  4. 看的一个pdf说的。。大型网站架构演变
  5. 玩家可以输入辅助指令_最后生还者 第二部辅助功能详解 盲人玩家也能玩
  6. win7系统显卡在哪查看
  7. html给背景架渐变,JS和CSS实现渐变背景特效的代码
  8. python查找文件并重命名_python实现遍历文件夹图片并重命名
  9. win10录屏_一分钟教你学会两种电脑录屏的方法,以后别再说不知道了
  10. zoj3869 Ace of Aces zoj3880 Demacia of the Ancients(水)
  11. 技术人员的价值是什么?技术的价值体现在赋能业务
  12. Windows系统下GIT生成密钥和添加密钥git
  13. 磁盘碎片对计算机系统的影响,磁盘碎片整理第9遍了|Win7磁盘碎片整理的方法
  14. Win10系统开启黑暗主题
  15. Kafka——创建无消费者组的消费者消费订阅主题
  16. 从零开始学python网络爬虫
  17. 软件工程 系统测试概述
  18. RN使用native-nivigation3.0.9后报错3: unexpected char: '\' @ line 3, column 133. s\react-native-gestu
  19. Centos7 lvm
  20. access DateAdd函数

热门文章

  1. 小胡网创:读书和赚钱是一个人一生最好的修行
  2. python制作图表放入excel_python- xlsxwriter模块使用(拓展:Excel插入图表)
  3. 两个ip linux,教你ipconfig有两个ip地址的解决方法
  4. 5千字长文:KeePass完全入门指南(附已经配置好的版本)
  5. 1.1Vue安装以及使用(node安装)
  6. Netty实战:设计一个IM框架就这么简单!
  7. 如何给屏幕设置一个充满全屏幕的背景图片
  8. mac python 连接oracle数据库(mac cx_Oracle.DatabaseError: DPI-1047: )
  9. 看理想:3万辆交付意味着什么?
  10. 置信度置信水平置信区间