了解 Flutter 3.16 功能更新

news2024/9/21 14:28:33

b953353f2ec586dd9d9d05e7ae413226.png

作者 / Kevin Chisholm

我们在季度 Flutter 稳定版发布会上带来了 Flutter 3.16,此版本包含诸多更新: Material 3 成为新的默认主题、为 Android 带来 Impeller 的预览版、允许添加适用于 DevTools 的扩展程序等等,以及同步推出 Flutter 休闲游戏工具包重大更新!

  • Flutter 休闲游戏工具包重大更新

    https://medium.com/flutter/building-your-next-casual-game-with-flutter-716ef457e440

自上次发布以来,仅仅三个月,我们便收到了 145 名社区成员合并提出的 928 个拉取请求 (pull request),其中有 40 名社区成员在 Flutter 上首次提交了他们的编写!

欢迎您继续阅读本篇文章,了解 Flutter 社区为这个最新版本带来的所有新功能和改进!

框架

Material 3 成为新的默认设计语言

Material 库已更新至 3.10 版本 (2023 年 5 月),以匹配最新的 Material Design 规范。更改包括新的组件、组件主题以及更新的组件视觉效果。在 3.16 版本之前,这些更改在 useMaterial3 主题标志旁显示为 "选择加入";自此版本起,useMaterial3 默认为 true。(#130764)

  • #130764

    https://github.com/flutter/flutter/pull/130764

虽然您仍然可以通过在 MaterialApp 主题中设定 useMaterial3: false 从而选择退出 M3 版本的 Material 库,但 Material 2 最终还是会被弃用和删除。此外,一些 widgets 不仅需要更新,还需要全新的实现方式。因此,当您的界面以 Material 3 形式运行时,可能看起来有点奇怪。要解决此问题,您可以手动迁移到新的 widgets,例如 NavigationBar。您可以在 GitHub 上的 Material 3 umbrella issue 查看更多详情。

  • NavigationBar

    https://api.flutter.dev/flutter/material/NavigationBar-class.html

  • Material 3 umbrella issue

    https://github.com/flutter/flutter/issues/91605

通过演示应用,您可以试用所有组件。演示版支持切换 useMaterial3,以便您针对更改进行比较。

  • 演示应用

    https://flutter.github.io/samples/material_3.html

Material 3 组件的外观主要由 [ThemeData.colorScheme] 和 [ThemeData.textTheme] 的值决定。ColorScheme.fromSeed() 是 Material 3 配色方案的首选方式,可以生成既美观又符合无障碍对比度要求的深色和浅色方案。您还可以使用 ColorScheme.fromImageProvider,以根据图像中的主色调生成配色方案。如果您想进一步自定义 Material 3 组件的外观,可以将组件主题添加到 ThemeData,例如 ThemeData.segmentedButtonTheme 或 ThemeData.snackBarTheme。非空组件主题属性会覆盖组件的 API 文档中指定的默认值。

f28375828605ad88549c879e4dbc5783.gif

  • ThemeData.segmentedButtonTheme

    https://api.flutter.dev/flutter/material/SegmentedButtonThemeData-class.html

  • ThemeData.snackBarTheme

    https://api.flutter.dev/flutter/material/SnackBarThemeData-class.html

支持 Material 3 动效

对 Material 3 动效的改进包括新增 Easing 和 Durations 类。Material 2 曲线被重命名后包含了 "legacy" 提示,最终将被弃用和删除。(#129942)

  • #129942

    https://github.com/flutter/flutter/pull/129942

在编辑菜单中添加其他选项

在原生 iOS 系统上,用户现在可以选择文本并启动提供多种标准服务的共享菜单。在此版本中,我们添加了查找、搜索和共享选项。

457c484f567ae44c30390950d21a48cf.gif

用于指定全局文本缩放系数的 TextScaler

为了支持 Android 14 中为视障人士提供帮助的非线性字体缩放功能,我们使用新的 TextScaler 类替代 Text.textScaleFactor 属性。(#128522)

  • 非线性字体缩放功能

    https://blog.google/products/android/android-14/#:~:text=Also%2C%20you%20can%20improve%20readability,rate%20than%20smaller%20font%20size.

  • TextScaler

    https://api.flutter.dev/flutter/painting/TextScaler-class.html

  • #128522

    https://github.com/flutter/flutter/pull/128522

SelectionArea 更新

Flutter 的 SelectionArea 经过更新,可支持与使用鼠标单击或双击以及触屏设备上长按相关的原生手势。您可以在默认情况下通过 SelectionArea 和 SelectableRegion 使用这些新手势:

  • 单击: 在点击位置设置折叠的选项。

  • 双击: 选择点击位置的字词。

  • 双击 + 拖动: 扩展所选词块。

86ad7ae44fbb5b134517df448d1e4150.gif

  • 长按 + 拖动: 扩展所选词块。

b18285fee438608d66afeb175379a6d0.gif

可在焦点 widget 上操作的菜单项

此版本支持在使用菜单项时清除焦点更改: FocusManager 的 applyFocusChangesIfNeeded 函数现在可用于恢复菜单焦点——当用户单击菜单项时,焦点会返回至菜单打开之前焦点所在的项目。(#130536)

  • #130536

    https://github.com/flutter/flutter/pull/130536

iOS、macOS 中菜单项快捷方式的

自动重新排序

Mac 平台上的 Flutter 应用现在会按照《Apple 人机界面指南》对菜单中的快捷方式修饰符进行排序。(#129309)

f34d5d0b006d67fad4f08f90ad8aab75.png

△ 排序前

3b87cab38cb32284bd5a03c4e55d42ff.png

△ 排序后

  • #129309

    https://github.com/flutter/flutter/pull/129309

MatrixTransition 动画

新的 MatrixTransition widget 可用于变换转场动画。根据当前动画值,您可以提供应用于子 widget 的矩阵变换,也可以查看 DartPad 中示例的实现效果。(#131084)

  • DartPad 中示例

    https://dartpad.dev/?channel=beta&id=c82be58209035722f2cc7d78da855329

  • #131084

    https://github.com/flutter/flutter/pull/131084

PaintPattern 已添加到 flutter_test

在 flutter_test package 中,新的 PaintPattern 类允许您验证 CustomPainter 和 Decoration (在单元测试中使用) 等 widget 对画布进行的绘制调用。

以前,验证颜色和矩形是否绘制正确需要使用 golden 文件,但您现在可以使用 PaintPattern。以下是验证 MyWidget 是否在画布上绘制了圆圈的示例:

expect(
  find.byType(MyWidget),
  paints
    ..circle(
      x: 10,
      y: 10,
      radius: 20,
      color: const Color(0xFFF44336),
    ),
);
// Multiple paint calls can even be chained together.
expect(
  find.byType(MyWidget),
  paints
    ..circle(
      x: 10,
      y: 10,
      radius: 20,
      color: const Color(0xFFF44336),
    ),
    ..image(
      image: MyImage,
      x: 20,
      y: 20,
    ),
);

此 API 以前深藏于框架测试文件,我们注意到一些开发者发现它非常有用并将其复制到了自己的项目中。如果该 API 也适用于您的项目,您可以在升级到 Flutter 3.16 后从项目中删除该副本。

滚动更新

在 Flutter 3.13 首次发布二维滚动基础后,此次 3.16 版本带来了更多功能和优化,2D 基础现在支持 KeepAlive widget,以及默认的焦点遍历和隐式滚动。在此基础之上构建的 2D 滚动 widget 将自动采用此支持。有关在 2D 基础上构建的综合指南,您可以观看最新一集的《Flutter Build Show》。

  • 最新一集的《Flutter Build Show》

    https://www.youtube.com/watch?v=ppEdTo-VGcg

3.13 版本发布后不久,two_dimensional_scrollables package 也随之发布。此 package 由 Flutter 团队维护,包含首个基于框架基础构建的 2D 滚动 widget — TableView。自首次发布以来,我们添加了更多装饰和样式支持,并修复了其他问题。

  • two_dimensional_scrollables

    https://pub.flutter-io.cn/packages/two_dimensional_scrollables

引擎

Impeller

Android

在此版本中,我们很高兴地与您分享,Impeller 已在 Android 上准备就绪,可用于在稳定渠道上收集预览版反馈。自今年早些时候,团队一直在努力为 Impeller 开发 Vulkan 后端,此次预览版包括收集 Impeller 在支持 Vulkan 的设备上表现的相关反馈。

5bf8658c934a969240b8b7980f3e7ca0.png

△ 这张图表显示了在过去一年里,在对 Impeller 的 Vulkan 后端上运行的 Flutter Gallery 进行的转换性能基准测试中,99% 帧时间、90% 帧时间和平均帧光栅化时间都有所改善,由于卡顿更少、稳态帧率更高,用户可以直观地看到这些改善。在此测试结束时,由于我们从 Samsung S10 设备改用 Pixel 7 Pro 设备,导致数据大幅下降。尽管如此,趋势和整体结果仍然鼓舞人心。

在不支持 Vulkan 的设备上,预计 Impeller 表现不佳。我们计划在未来几个月内为 Impeller 的 OpenGL 后端提供完备功能,以及在未来的稳定版本中征集有关 Impeller 在这些设备上的表现的反馈意见。

要在支持 Vulkan 的 Android 设备上试用 Impeller,Flutter 开发者可以将 — enable-impeller 标志传递给 flutter run,或将以下设置添加到 <application> 标签下的项目 AndroidManifest.xml 文件中:

<meta-data
  android:name="io.flutter.embedding.android.EnableImpeller"
  android:value="true" />

为了确定设备是否支持 Vulkan,您需要对 Impeller 进行 Impeller repo docs 中讨论的测试。一般来说,在运行 Android API 级别 29 或更高版本的 64 位操作系统的设备上,Impeller 使用的是 Vulkan 后端。用户还可以按照检查是否支持 Vulkan 中的建议从而确定设备是否支持 Vulkan。

  • Impeller repo docs

    https://github.com/flutter/engine/blob/main/impeller/docs/android.md#rendering-backend-selection

  • 检查是否支持 Vulkan

    https://docs.vulkan.org/guide/latest/checking_for_support.html#_android

虽然迄今为止,我们对在 Impeller 的 Vulkan 后端上取得的进展比较满意,但预览阶段仍有一些已知问题:

  • 由于平台视图尚未实现,因此包含平台视图的框架效果不佳。

  • 自定义着色器尚未实现。

  • 有关已知错误和缺失功能的完整列表,您可以参阅 GitHub 的 Impeller 项目板中的最新信息。我们已在 3.17 beta 版中修复了一些问题,您也可以试用新版本。

  • 已知错误

    https://github.com/orgs/flutter/projects/21/views/1?filterQuery=-status:%22%E2%9C%85+Done%22+status:%22%F0%9F%90%9E+Bugs%22

  • 缺失功能

    https://github.com/orgs/flutter/projects/21/views/11

  • 项目板

    https://github.com/orgs/flutter/projects/21

我们对尝试在支持 Vulkan 的 Android 设备上取得的 Impeller 保真度和性能进展感到满意。然而,与 iOS 相比,Android 硬件生态系统更加多样化,因此我们预计 Android 的预览版试用期比 iOS 更长,然后才能将其作为稳定渠道上的默认后端。基于上述原因,关于 Impeller 的最实用反馈应包括发生问题的具体设备和 Android 版本的详细信息。

此外,Impeller 的 Vulkan 后端在 "调试" 版本中启用了超出 Skia 使用范围的额外调试功能,这些功能会产生额外的运行时开销。因此,有关 Impeller 性能的反馈务必来自配置文件或发布版本,并且应包括来自 DevTools 的时间轴以及与同一设备上的 Skia 后端的比较。我们非常感谢每一个包含可复现的小型测试用例的反馈。

Impeller 性能、保真度和稳定性

除了关注 Vulkan 后端,自今年年初以来,团队还对 Impeller 中的文本性能进行了许多改进,这对 Android 和 iOS 都有好处。特别是我们改进了 Impeller 字形图集的管理以及在引擎的界面和光栅线程中划分文本工作负载的方式。因此,用户会注意到,即使处理繁重的文本工作负载,发生卡顿的情况也会减少。

ed1dc78f9f86e2c0a377338bf782ee2c.png

△ 这张图表显示了在使用 Impeller 的 iPhone 11 上进行的其中一项大量文本基准测试中,99% 帧时间、90% 帧时间和平均帧光栅化时间均有减少 (以毫秒为单位)。特别是,90% 帧时间和平均帧光栅化时间几乎减半。

团队还一直在努力改进 Android 和 iOS 的保真度和稳定性,特别是用户报告的内容。在此稳定版本发布的三个月中,团队已经针对 Flutter/引擎 repo 提交了 209 个与 Impeller 相关的内容,解决了 217 个问题,其中包括 42 个有关保真度、稳定性或性能问题的用户报告。

引擎性能

为了在采用异构多处理的移动设备上提供更好的性能支持,我们修改了引擎,以便注重性能的线程 (例如,界面和光栅线程) 可适应设备更强大的内核。我们观察到,这一变化对一系列基准和设备产生了积极影响。在某些情况下,这种改善十分显著,99% 帧时间或 90% 帧时间至少减半。我们预计,经过此次更改后,无论在 Android 上使用 Skia 后端还是 Impeller 后端,用户都会注意到卡顿情况有所减少。在 iOS 设备上,因为更强大的内核和更弱的内核之间的差异较小,所以效果并不太明显。

5e425078833b00465c73882b64fea873.png

△ 这张图表显示了,我们几乎所有 Android 基准和设备的最差帧时间、99% 帧时间、90% 帧时间以及平均帧构建时间和帧光栅化时间都有所改善。

  • 修改了引擎

    https://github.com/flutter/engine/pull/45673

API 和保真度改善

Impeller 性能叠加

在以前的版本中,Flutter 的性能叠加功能未在 Impeller 中显示。此版本修复了该问题,性能叠加在 Impeller 启用后将会正确显示。

  • 性能叠加

    https://docs.flutter.dev/perf/ui-performance#the-performance-overlay

  • 性能叠加将会正确显示

    https://github.com/flutter/engine/pull/45259

抖动现在会正确显示

在此版本中,Paint.enableDithering 属性被设置为 true,并且根据 Flutter 的弃用策略已被弃用。抖动现在默认启用 (不再支持开发者可配置的抖动),您将不会再遇到渐变问题。您可以参阅 docs.flutter.dev 中的重大变更页面了解有关此更改的完整说明和迁移指南。

65e045c127a0d2cb20a17a47f188b740.png

△ 之前

bc0fd68cebb125a4b49e0850b3b8e998.png

△ 之后

  • Flutter 的弃用策略

    https://docs.flutter.dev/release/compatibility-policy#deprecation-policy

  • 重大变更页面

    https://docs.flutter.dev/release/breaking-changes/paint-enableDithering

游戏

Flutter 游戏工具包

过去几年,休闲游戏开发社区不断发展壮大。从简单而有趣的解谜游戏到更复杂的街机游戏,数以万计使用 Flutter 开发的游戏得以发布。深受喜爱的游戏包括 Etermax 的 Trivia Crack、Lotum 的 4 Pics 1 Word (猜词游戏)、Dong Digital 的 Brick Mania (街机游戏)、Onrizon 的 StopotS (分类游戏)、我们为 I/O 大会开发的复古弹球游戏以及在社交和菜单屏幕中使用 Flutter 的 PUBG 手游等。

38919235702d7e3473ca199a9ec0d3ef.gif

  • Trivia Crack

    https://triviacrack.com/

  • 4 Pics 1 Word

    https://flutter.cn/showcase/lotum

  • Brick Mania

    https://play.google.com/store/apps/details?id=net.countrymania.brick&hl=en

  • StopotS

    https://play.google.com/store/apps/details?id=com.gartic.StopotS&hl=en

  • retro pinball game

    https://pinball.flutter.dev/

  • PUBG

    https://flutter.dev/showcase/pubg-mobile

为了帮助游戏开发者提高工作效率,我们对 Flutter 的休闲游戏工具包进行了重大更新。此次更新包括提供一系列新资源,可帮助开发者利用更多特定类型的模板把游戏从概念走向发布,例如纸牌游戏、无尽跑酷游戏以及 Google Play 游戏服务、应用内购买、广告、成就、crashlytics 和多人游戏支持等服务集成。

  • 休闲游戏工具包

    http://flutter.cn

Web

Chrome DevTools 中的

Flutter 时间轴事件

Flutter 时间轴事件现在显示在 Chrome DevTools 的性能面板中。(#130132)

  • #130132

    https://github.com/flutter/flutter/issues/130132

您可以查看 Web 应用的调试性能了解更多详细信息。

fd65542ea3ce2c2cc5c335550d07ceea.png

  • Web 应用的调试性能

    https://docs.flutter.dev/perf/web-performance

Android

鼠标滚轮支持

在优化 Wonderous 以符合 Android 的大屏指南要求时,我们发现了一个问题,鼠标滚轮在平板电脑或可折叠设备上表现不佳。这导致出现了一个普遍现象,用户必须大幅移动滚轮才能让屏幕响应。

  • 优化 Wonderous 以满足 Android 的大屏指南要求

    https://medium.com/flutter/developing-flutter-apps-for-large-screens-53b7b0e17f10

  • 普遍现象

    https://github.com/flutter/flutter/issues/82973

通过此版本更新,使用鼠标在 Flutter 视图上的滚动速度与在 Android 设备上的滚动速度得以匹配。(44724)

  • 44724

    https://github.com/flutter/engine/pull/44724

1ed7fbc8afe89efcf2fde32e2e6c1d95.gif

之前

4a2e101b5a9291b719ef0b90a872d633.gif

之后

预测性返回导航

Android 14 版本包含预测性返回手势功能,允许您在设备上使用返回手势 "查看" 当前屏幕后面的主屏幕。此更新也为 Flutter 带来了预测性返回手势!您可以查看迁移指南了解详情。

384b7f8efcbd84053647539ca80ed778.gif

  • 迁移指南

    https://docs.flutter.dev/release/breaking-changes/android-predictive-back#migration-guide

iOS

应用扩展

Flutter 现在可用于定位某些 iOS 应用扩展。这意味着可以使用 Flutter widget 为某些类型的 iOS 应用扩展绘制界面。这并不适用于所有类型的应用扩展,因为 API (例如,主屏幕 widget) 或内存可能存在限制。

601c8b14cd169cee6b715917f4514fe0.png

  • iOS 应用扩展

    https://developer.apple.com/app-extensions/

您可以访问 docs.flutter.dev 中的添加 iOS 应用扩展了解详情并查看有关如何定位 "共享" 扩展的示例。

  • 添加 iOS 应用扩展

    https://docs.flutter.dev/platform-integration/ios/app-extensions

Package 生态系统

新的 Flutter Favorite 内容

我们已重新启动 Flutter Favorite 项目!在此周期中,Flutter 生态系统委员会将 flame、flutter_animate、flutter_rust_bridge、riverpod、video_player、macos_ui 和 fpdart package 指定为新的 Flutter Favorite。

  • Flutter Favorite 

    https://docs.flutter.dev/packages-and-plugins/favorites

  • flame

    https://pub.flutter-io.cn/packages/flame

  • flutter_animate

    https://pub.flutter-io.cn/packages/flutter_animate

  • flutter_rust_bridge

    https://pub.flutter-io.cn/packages/flutter_rust_bridge

  • riverpod

    https://pub.flutter-io.cn/packages/riverpod

  • video_player

    https://pub.flutter-io.cn/packages/video_player

  • macos_ui

    https://pub.flutter-io.cn/packages/macos_ui

  • fpdart

    https://pub.flutter-io.cn/packages/fpdart

敬请您持续关注更新的 Flutter Favorite 内容。您可以向委员会发送电子邮件消息 (电子邮件地址: flutter-committee@googlegroups.com),来提名 package 或插件成为潜在的未来 Flutter Favorite,还可以提醒委员会注意任何其他问题。

abad2085baa6c2a8c940c59dea219283.png

首届 package 生态系统网络峰会

8 月,我们举办了首届 package 生态系统网络峰会,超过 50 名非 Google 员工和 Google 员工贡献者通过 pub.dev 参与了本次峰会。我们的目标是将贡献者们聚集在一起,开展非会议式的讨论,让大家交流计划、传授经验、互相学习并在社区中分享想法。会后调查显示,大家对会议的满意度为 100%。我们计划在未来与社区合作,举办类似的 package 生态系统 (面对面和网络) 活动。

  • pub.dev

    https://pub.dev/

基于 Cloud 的 Google 地图样式

利用 Google Maps Platform,您可以在 Google Cloud Console 的 "地图样式" 页面中自定义地图样式,而无需在每次更改样式时更新应用代码,即可享受自定义体验。

a70a9249bd62a6c667ba788a9ae7e1f8.png

如果您想要在 Flutter 中使用此功能,只需使用控制台中设置的地图 ID 即可引用地图:

GoogleMap(
       onMapCreated: _onMapCreated,
       initialCameraPosition: const CameraPosition(
         target: _kMapCenter,
         zoom: 7.0,
       ),
       key: _key,
       cloudMapId: _mapId
);

CameraX 改进

在 3.10 稳定版中,我们对 Flutter 相机插件添加了初步的 CameraX 支持。CameraX 是一款 Jetpack 库,可简化向 Android 应用添加丰富相机功能的流程。

  • CameraX

    https://developer.android.google.cn/training/camerax

在此版本中,我们添加了使用相机的应用所需的大部分功能。CameraX 解决了 Camera2 插件实现方式中存在的许多问题。

我们建议您使用 CameraX 插件。如果您选择启用,可以将以下行添加到 pubspec.yaml 文件中。

Dependencies:
camera: ^0.10.4 # Or try the latest camera version
camera_android_camerax: ^0.5.0

我们计划在未来版本中将 CameraX 作为默认实现方式,期待您的反馈。

macOS 视频播放器

我们为视频播放器插件添加了 macOS 支持,允许开发者在 widget 表面播放视频。

  • 视频播放器插件

    https://pub.flutter-io.cn/packages/video_player

您可以在 pub.dev 中搜索视频播放器插件了解详情。

  • pub.dev

    https://pub.dev/

  • 视频播放器插件

    https://pub.flutter-io.cn/packages/video_player

DevTools

DevTools 扩展

新的 DevTools 扩展框架支持:

  • package 作者可以直接在 DevTools 中为 package 构建自定义工具。

  • package 作者可以利用 DevTools 中的现有框架和实用程序编写功能强大的工具。

  • 正在使用 DevTools 调试应用的 Dart 和 Flutter 开发者可以访问特定于其用例的工具 (取决于其应用的依赖项以及哪些依赖项提供 DevTools 扩展)。

  • DevTools 扩展框架

    https://pub.flutter-io.cn/packages/devtools_extensions

感谢 Provider、Drift 和 Patrol 的 package 作者,这个生态系统已经在构建中,您可以立即使用这些 package 的 DevTools 拓展!

  • Provider

    https://pub.flutter-io.cn/packages/provider

  • Drift

    https://pub.flutter-io.cn/packages/drift

  • Patrol 

    https://pub.flutter-io.cn/packages/patrol

e0969b3c47772e473dbfe90bc0083352.png

Provider

72e9d7306b5a402e75ea7a6234b42c1e.png

Patrol

94af135d5eee5e170bf841cf9797583b.png

Drift

您可以查看 Kenzie Davisson 撰写的 Dart 和 Flutter DevTools 扩展公告,深入了解 DevTools 扩展。

  • Kenzie Davisson

    https://medium.com/@kenzieschmoll

  • Dart 和 Flutter DevTools 扩展公告

    https://medium.com/flutter/dart-flutter-devtools-extensions-c8bc1aaf8e5f

DevTools 更新

此版本的 DevTools 有以下亮点:

  • 添加了对 DevTools 扩展的支持

  • 添加了新的 "主" 屏幕,显示已连接应用的摘要

8ff6598af9c1ae7e042591d44e5fabbc.png

其他改进包括:

  • 整体性能

  • 热重启的稳健性

  • 文本选择及复制行为

  • 网络性能分析器响应查看器的优化

您可以查看 DevTools 2.26.1、2.27.0 和 2.28.1 的版本说明了解详情。

  • 2.26.1

    https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.26.1

  • 2.27.0

    https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.27.0

  • 2.28.1

    https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.28.1

VS Code 界面可检测性

感谢 Flutter 社区成员 DanTup 的出色工作, Flutter VS Code 扩展现已配备 Flutter 侧边栏,您可以轻松:

  • 打开 Flutter DevTools 屏幕

  • 查看处于活跃状态的调试会话

  • 查看可用设备

  • 创建新项目

  • 热重载和重启

  • 运行 Flutter Doctor -v

……

63471e33eb37d8747eeb04bf605d3de9.jpeg

  • DanTup

    https://github.com/DanTup

弃用和重大变更

此版本中的重大变更包括 v 3.13 版本后过期并被弃用的 API。如果您想查看所有受影响的 API 以及其他背景信息和迁移指南,您可以参阅此版本的弃用指南。其中的许多 API 都受 Flutter Fix 支持,包括 IDE 中的快速修复,您也可以使用 dart fix 命令评估和应用批量修复。

  • 此版本的弃用指南

    https://docs.flutter.dev/release/breaking-changes/3-13-deprecations

  • Flutter Fix

    https://docs.flutter.dev/development/tools/flutter-fix

非常感谢社区一如既往地提供测试,帮助我们推进了以上重大变更。如需了解详情,您可以查看 Flutter 的重大变更政策。

  • 提供测试

    https://github.com/flutter/tests/blob/master/README.md

  • Flutter 的重大变更政策

    https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes

在下个版本中,我们计划将弃用政策的适用范围扩展到除已支持的 package (flutter 和 flutter_test) 之外的 flutter_driver package。

即刻体验

我们特意在本文的开篇部分列出了贡献者的数量。大家 (卓越社区) 的共同努力,让 Flutter 在当下成为轻松易用且能提高工作效率的工具包。再次谢谢大家。

有关此版本中包含的 PR 完整列表,您可以查看版本说明和更新日志。

  • 版本说明和更新日志

    https://docs.flutter.dev/release/release-notes

Flutter 3.16 目前已发布至稳定渠道,包括 Dart 3.2,您只需单击 flutter upgrade 即可开始使用这些最新的更新。

  • Dart 3.2

    https://medium.com/dartlang/dart-3-2-c8de8fe1b91f

  • flutter upgrade

    https://docs.flutter.dev/release/upgrade

期待下次更新再见!


935d62b7bc08caf2f151f50b60d7882c.gif 点击屏末  | 即刻访问 Flutter 开发者社区中文资源

a641919e828ec36d03b0db17e5e17c37.png

89d2c8106f2ebfad319c2d24580eb75e.png

eadb303817dd3ad9225ab6bc671c9045.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1316570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php查询数据库,并通过表格展示

第一步&#xff1a;创建数据库 创建一个数据库php-crud 第二步&#xff1a;创建数据库表 在数据库php-crud下创建一个歌曲表song /*Navicat Premium Data TransferSource Server : MariaDBSource Server Type : MariaDBSource Server Version : 100605 (10.6.5-M…

PrimDiffusion:3D 人类生成的体积基元扩散模型NeurIPS 2023

NeurIPS2023 &#xff0c;这是一种用于 3D 人体生成的体积基元扩散模型&#xff0c;可通过离体拓扑实现明确的姿势、视图和形状控制。 PrimDiffusion 对一组紧凑地代表 3D 人体的基元执行扩散和去噪过程。这种生成建模可以实现明确的姿势、视图和形状控制&#xff0c;并能够在…

linux 开机启动流程

1.打开电源 2.BIOS 有时间和启动方式 3.启动Systemd 其pid为1 4.挂载引导分区 /boot 5.启动各种服务 如rc.local

Ps:形状工具 - 描边选项

在形状工具的工具选项栏或“属性”面板中&#xff0c;单击“设置形状描边类型” Set shape stroke type菜单图标可打开“描边选项” Stroke Options面板。 描边预设 Stroke Type 默认列出了实线、虚线和点线三种类型的描边&#xff0c;单击可应用。 自己创建并存储的描边类型&a…

蓝桥杯专题-真题版含答案-【国庆星期日】【三色棋】【蒙地卡罗法求 PI】【格雷码(Gray Code)】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

selenium-grid4.3.0两种模式记录

selenium-grid4.3.0两种模式记录 本文运行&#xff0c;需要提前配置好Java11以及安装好Chrom、Firefox、Safari其中一个浏览器&#xff0c;如果是Chrom、Firefox需要下载对应版本的驱动&#xff0c;并给 webdriver 配置环境变量&#xff0c;Safari浏览器Mac系统会自带&#xf…

SQL进阶理论篇(八):SQL查询的IO成本

文章目录 简介数据库缓冲池查看缓冲池的大小数据页加载的三种方式通过 last_query_cost 统计 SQL 语句的查询成本总结参考文献 简介 本节将介绍磁盘IO是如何加载数据的&#xff0c;重点介绍一下数据库缓冲池的概念。主要包括&#xff1a; 什么是数据库缓冲池&#xff0c;它在…

CSS学习笔记整理

CSS 即 层叠样式表/CSS样式表/级联样式表&#xff0c;也是标记语言&#xff0c; 用于设置HTML页面中的文本内容&#xff08;字体、大小、对齐方式等&#xff09;、图片的外形&#xff08;宽高、边框样式、边距&#xff09;以及版面的布局和外观显示样式 目录 准备工作 Chrome调…

关于反射机制的简单理解

1、反射的简单认识 1.1 定义 Java的反射&#xff08;reflection&#xff09;机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff0c;既然能拿到,那么我…

持续集成交付CICD:Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前后端应用

目录 一、实验 1.部署Ansible自动化运维工具 2.K8S 节点安装nginx 3.Jenkins使用GitLab共享库实现基于Ansible的CD流水线部署前后端应用 二、问题 1.ansible安装报错 2.ansible远程ping失败 3. Jenkins流水线通过ansible命令直接ping多台机器的网络状态报错 一、实验 …

Photoshop插件3D Map Generator Geo的使用记录1(版本说明、安装卸载使用和高程数据生成3D地形图的准备工作)

3D Map Generator是一款强大的地图创建和定制化工具&#xff0c;具有以下特点和功能&#xff1a; 快速创建3D地图&#xff1a;用户可以通过该工具快速创建出高质量的3D地图&#xff0c;而无需具备专业的GIS或PS技能。支持多种图层类型&#xff1a;3D Map Generator支持多种图层…

pytest之allure测试报告03:allure动态自定义报告

1、测试用例模块中引入allure&#xff1a;import allure 2、yaml文件中定义添加title、story的值&#xff1a; 3、测试用例中读取调用。eg:allure.dynamic.title() 4、运行报告查看&#xff1a;成功动态展示yaml文件中配置的story、title

WPF-UI HandyControl 控件简单实战

文章目录 前言UserControl简单使用新建项目直接新建项目初始化UserControlGeometry:矢量图形额外Icon导入最优解决方案 按钮Button切换按钮ToggleButton默认按钮图片可切换按钮加载按钮切换按钮 单选按钮和复选按钮没有太大特点&#xff0c;就不展开写了总结 DataGrid数据表格G…

用标记接口定义类型

标记接口是不含有任何方法的接口&#xff0c;它的目的是通过将特定接口应用于类来为该类添加类型信息。以下是一个示例&#xff1a; public interface Drawable {// 标记接口&#xff0c;不包含任何方法 }public class Circle implements Drawable {private int radius;public…

过滤器和监听器及应用

Filter及应用 Filter有什么用?一、Filter处理中文乱码二、监听器&#xff0c;统计网站在线人数1.监听器引入2.统计网站在线人数 三、Filter实现权限拦截 Filter有什么用? Filter:过滤器&#xff0c;可以用来过滤网站的数据。 比如处理中文乱码&#xff0c;每次写servlet&…

k8syaml提供的几个有意思的功能,Kubernetes在线工具网站

k8syaml.cn 提供的几个有意思的功能。 一、yaml资源快速生成 之前编写operator的helm的时候就需要自己写deployment、service、configmap这些资源&#xff0c;那么多字段也记不清&#xff0c;都是先找个模版&#xff0c;然后copy改改&#xff0c;再看官方文档&#xff0c;添加…

LeetCode(66)二叉树的最大深度【二叉树】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 二叉树的最大深度 1.题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7]…

[已解决】uniapp内置插件,editor富文本报错(附quill.min.js、image-resize.min.js文件)

在使用uni-app运行内置插件editor时&#xff0c;无法输入内容&#xff0c;控制台报错 原因&#xff1a;查看官网得知&#xff0c;需动态引入quill.min.js、image-resize.min.js文件 解决方法&#xff1a; 1.下载quill.min.js、image-resize.min.js到项目static/eidtor文件中 链…

在Windows上通过cmake-gui及VS2019来 编译OpenCV-4.5.3源码

文章目录 下载OpenCV-4.5.3源码下载opencv_contrib-4.5.3源码打开cmake-gui选择生成器 通过 Visual Studio 2019 打开构建好的.sln工程文件执行编译操作执行安装操作 下载OpenCV-4.5.3源码 可通过github上下载&#xff0c;网上很多&#xff0c;找到tag标签&#xff0c;选择 Op…

TCP/IP详解——HTTP 协议

文章目录 1. HTTP 协议1.1 URL 的格式1.2 请求报文分析1.2.1 请求行1.2.2 请求头 1.3 响应报文分析1.3.1 状态行1.3.2 响应报头 1.4 HTTP 工作原理1.5 Request 消息1.6 Request 包解码1.7 Response 消息1.8 HTTP 协议抓包分析1.8.1 CSNAS 抓包查看1.8.2 Wireshark 抓包查看1.8.…