Flutter 3.24 发布:GPU模块及多视图嵌入功能
Flutter 3.24 带来了许多新功能和改进,让开发应用程序变得更加容易和有趣。这个版本重点展示了 Flutter GPU 的预览功能,让应用程序可以直接使用高级图形和 3D 场景功能。
此外,网页应用现在可以嵌入多个 Flutter 视图,增加了应用的灵活性。最后,官方还增加了视频广告功能,帮助您通过应用赚钱。
在过去的几个月里,Flutter 社区非常活跃,共有 852 个框架更新和 615 个引擎更新。官方欢迎 49 位新贡献者的加入,正是大家的热情和努力推动了 Flutter 的发展。
让我们来看看 Flutter 3.24 的所有新功能和改进吧!
Flutter 框架
新的 Sliver 组件
此次更新新增了两个 Sliver 组件,用于构建动态的应用程序标题:
- PinnedHeaderSliver
- SliverResizingHeader
这些新的 Sliver 可以帮助您创建可以浮动、固定或随着用户滚动而调整大小的标题。相比于现有的 [SliverPersistentHeader](https://api.flutter.dev/flutter/widgets/SliverPersistentHeader-class.html)
和 [SliverAppBar](http://sliverappbar/)
,这些新的组件提供了更简单的 API,可以更灵活地组合使用。
Cupertino 库的更新
此次更新提升了 [CupertinoActionSheet](https://api.flutter.dev/flutter/cupertino/CupertinoActionSheet-class.html)
的体验。现在按下按钮时会有触觉反馈,按钮的字体大小和粗细也和原生应用一致。
另外,官方还为 [CupertinoButton](https://api.flutter.dev/flutter/cupertino/CupertinoButton-class.html)
增加了新的焦点属性,您还可以自定义禁用状态下 [CupertinoTextField](https://api.flutter.dev/flutter/cupertino/CupertinoTextField-class.html)
的颜色。Cupertino 库还在不断改进,未来会有更多更新。
TreeView 组件
[two_dimensional_scrollables](https://pub.dev/packages/two_dimensional_scrollables)
包增加了 [TreeView](https://pub.dev/documentation/two_dimensional_scrollables/latest/two_dimensional_scrollables/TreeView-class.html)
组件和相关类,用于构建可以从两个方向滚动的树状组件。
同时,TreeSliver 也被添加到框架中,可以用于构建单向滚动的树状结构。TreeView
和 TreeSliver
的 API 一致,使它们之间的切换更加方便,适用于不同的使用场景。
CarouselView 组件
此次更新引入了 Material Design 轮播图 组件:CarouselView
。CarouselView
提供了一种可以滚动到容器边缘的布局,项目在滚动时可以动态改变大小。
更多小部件功能
一些核心小部件逻辑从 Material 库迁移到 Widgets 库中,以便更广泛地使用。这些改进包括:
-
[Feedback](https://github.com/flutter/flutter/pull/148523)
小部件,可轻松访问设备的触觉和音频反馈。 -
[ToggleableStateMixin](https://github.com/flutter/flutter/pull/148272)
和[ToggleablePainter](https://github.com/flutter/flutter/pull/148272)
,用于构建切换类小部件(如复选框、开关、单选按钮)的基类。
AnimationStatus 的新功能
社区成员 @nate-thegrate 为 AnimationStatus 增加了新功能,添加了以下 getter 方法:
- isDismissed
- isCompleted
- isRunning
- isForwardOrCompleted
这些方法帮助开发者更方便地检查动画的状态。此外,AnimationController
还增加了一个 [toggle](https://api.flutter.dev/flutter/animation/AnimationController/toggle.html)
方法,用于切换动画的方向。
SelectionArea 的改进
Flutter 的 [SelectionArea](https://api.flutter.dev/flutter/material/SelectionArea-class.html)
现在支持更多与鼠标三击和触摸设备双击相关的手势,默认情况下,SelectionArea
和 [SelectableRegion](https://api.flutter.dev/flutter/widgets/SelectableRegion-class.html)
小部件使用这些新手势。
三击操作可以选择整段文本,而双击操作可以选择单词,使文本选择变得更加简单。
引擎
Impeller
提升性能和效果
团队一直在努力提升 Impeller 的性能和保真度,尤其是即将取消 iOS 上的 Impeller 选择退出。例如,一系列改进大幅提高了文本渲染性能,特别是在滚动大量表情符号时,消除了卡顿现象。
通过解决一些问题,Impeller 现在在文本粗细、间距和字距调整上与旧版渲染器表现一致。
Android 预览
此次版本中,官方继续在 Android 平台预览 Impeller。由于 Android 14 的一个 bug,影响了 Impeller 对平台视图的支持,预览期被延长。官方希望开发者升级到最新版本并提供反馈,这对于 Impeller 在 Android 平台上的成功至关重要。
缩小图像的默认设置改进
在此版本中,图像的默认 FilterQuality
从 FilterQuality.low
改为 FilterQuality.medium
,以减少像素化效果并提高渲染速度。
Flutter GPU 预览
Flutter 引入了一项主要的渲染更新:Flutter GPU。这个低级图形 API 允许开发者使用 Dart 代码和 GLSL 着色器创建自定义渲染器,而不需要任何原生平台代码。
Flutter GPU 让应用程序能够直接渲染高级图形和 3D 场景,目前支持 iOS、macOS 和 Android 平台。未来,Flutter GPU 会逐渐增加更多功能,官方将提供更高层次的渲染库来简化这些高级功能的使用。
开发者可以通过切换到主渠道并添加 flutter_gpu
包来开始使用 Flutter GPU。如需详细了解,请查看Flutter GPU 博客文章。
Web
多视图嵌入
Flutter 网页应用现在可以利用多视图嵌入功能,让开发者同时将内容渲染到多个 HTML 元素中。这种灵活性特别适合需要多个独立视图的复杂网页应用。
要启用多视图模式,请在 flutter_bootstrap.js
文件中设置 multiViewEnabled: true
,然后可以通过 JavaScript 动态添加或移除视图,Flutter 会相应地更新内容。
变现
视频广告变现支持
官方推出了新的 Interactive Media Ads (IMA) 插件,支持 Flutter 移动应用中的流视频广告变现。这个插件为 Flutter 应用提供了更多的广告收入机会,例如播放视频前先展示 15 秒的广告。
当前版本支持在 Android 和 iOS 平台上播放前贴片广告,未来将增加中贴片广告的支持。官方鼓励开发者开始在应用中尝试 IMA 插件。
iOS
Swift Package Manager 支持
Flutter 3.24 增加了对 Swift Package Manager 的初步支持,带来了一些好处:
- 可以访问 Swift 包生态系统。
- 简化 Flutter 的安装流程,未来将不再需要安装 Ruby 和 CocoaPods。
生态系统
Shared Preferences 插件更新
官方为 shared_preferences 插件增加了两个新 API:SharedPreferencesAsync 和 SharedPreferencesWithCache。它们提供了异步和缓存的偏好设置访问方式,使应用能够更好地管理偏好数据。
开发工具和 IDE
此次更新为 Flutter DevTools 工具套件带来了一些改进,例如 Rebuild Stats 功能可以帮助您追踪小部件的重建次数。另外,官方对 Network profiler 和 Flutter Deep Links tool 进行了优化,以便为开发者提供更好的体验。
要了解 Flutter 3.24 的所有更新,请查看 DevTools 2.35.0、2.36.0 和 2.37.2 的发行说明。
重大更改和弃用
此次版本包含了一些重大更改,例如 Navigator 的 pages API 和 PopScope 中的泛型类型。查看重大更改页面 以获取完整的迁移指南。
结论
Flutter 的成功离不开社区的支持。要详细了解本次发布的内容,官方邀请您查看发布说明 和 变更日志。
Flutter 3.24 和 Dart 3.5 现已在稳定渠道发布,快来升级并尝试这些新功能吧!